Home » amazon/MistralLite · Обнимающее лицо

amazon/MistralLite · Обнимающее лицо

MistralLite — это идеально настроенный Мистраль-7Б-v0.1 языковая модель с расширенными возможностями обработки длинного контекста (до 32 тыс. токенов). Используя адаптированное вращающееся встраивание и скользящее окно во время точной настройки, MistralLite может значительно лучше выполнять несколько длинных задач по извлечению контекста и ответам на них, сохраняя при этом простую структуру исходной модели. MistralLite полезен для таких приложений, как поиск длинных контекстных строк и тем, обобщение, ответы на вопросы и т. д. MistralLite можно развернуть на одном AWS. g5.2x экземпляр с Sagemaker Вывод генерации текста Huggingface (TGI) конечную точку, что делает его подходящим для приложений, которым требуется высокая производительность в средах с ограниченными ресурсами. Вы также можете обслуживать модель MistralLite напрямую, используя докер-контейнеры TGI. Кроме того, MistralLite поддерживает другие способы обслуживания, например vLLMи вы можете использовать MistralLite в Python, используя Трансформеры HuggingFace и FlashAttention-2 библиотека.

МистральЛайт похож на Мистраль-7Б-Инструкт-v0.1а их сходства и различия суммированы ниже:

Модель Точная настройка на длинные контексты Максимальная длина контекста Адаптация RotaryEmbedding Размер скользящего окна
Мистраль-7Б-Инструкт-v0.1 до 8 тыс. токенов 32К веревка_тета = 10000 4096
МистральЛайт до 16 тыс. токенов 32К веревка_тета = 1000000 16384


Мотивация разработки MistralLite

С момента выпуска Мистраль-7Б-Инструкт-v0.1Модель становилась все более популярной благодаря своим отличным характеристикам в широком диапазоне тестов. Но большинство тестов оцениваются на short context, и его производительность при выполнении длинных контекстных задач исследована не так уж и много. Затем мы оценили Mistral-7B-Instruct-v0.1 по сравнению с тестами, специально разработанными для оценки возможностей LLM в работе с более длительным контекстом. Хотя производительность моделей в длинном контексте была достаточно конкурентоспособной в длинном контексте менее 4096 токенов, существовали некоторые ограничения на производительность в более длинном контексте. Стремясь улучшить его характеристики в более длительном контексте, мы доработали модель Mistral 7B и выпустили Mistrallite. Модели удалось significantly boost the performance of long context handling поверх Мистраль-7Б-Инструкт-v0.1. Подробный long context evalutaion results как показано ниже:

  1. Поиск темы

    Название модели Входная длина Входная длина Входная длина Входная длина Входная длина
    2851 5568 8313 11044 13780
    Мистраль-7Б-Инструкт-v0.1 100% 50% 2% 0% 0%
    МистральЛайт 100% 100% 100% 100% 98%
  2. Поиск линии

Название модели Входная длина Входная длина Входная длина Входная длина Входная длина Входная длина
3818 5661 7505 9354 11188 12657
Мистраль-7Б-Инструкт-v0.1 98% 62% 42% 42% 32% 30%
МистральЛайт 98% 92% 88% 76% 70% 60%
  1. Получение ключа доступа
Название модели Входная длина Входная длина Входная длина Входная длина
3264 5396 8329 10197
Мистраль-7Б-Инструкт-v0.1 100% 50% 20% 30%
МистральЛайт 100% 100% 100% 100%
  1. Ответы на вопросы с помощью длинных вводимых текстов
    Название модели Тестовый набор Точность Жесткое подмножество Точность
    Мистраль-7Б-Инструкт-v0.1 44,3% 39,7%
    МистральЛайт 64,4% 56,2%


Пример теста на длинном контексте из 13400 токенов

  • Контекст взят из Amazon Аврора: часто задаваемые вопросы
  • Вопрос: расскажите, пожалуйста, как pgvector помогает с генеративным ИИ, и приведите несколько примеров.
  • Ответ от МистральЛайт:
    pgvector is an open-source extension for PostgreSQL supported by Amazon Aurora PostgreSQL-Compatible Edition.
    
    You can use pgvector to store, search, index, and query billions of embeddings that are generated from machine learning (ML) and artificial intelligence (AI) models in your database, such as those from Amazon Bedrock (limited preview) or Amazon SageMaker. A vector embedding is a numerical representation that represents the semantic meaning of content such as text, images, and video.
    
    With pgvector, you can query embeddings in your Aurora PostgreSQL database to perform efficient semantic similarity searches of these data types, represented as vectors, combined with other tabular data in Aurora. This enables the use of generative AI and other AI/ML systems for new types of applications such as personalized recommendations based on similar text descriptions or images, candidate match based on interview notes, customer service next best action recommendations based on successful transcripts or chat session dialogs, and more.
    


Детали модели


Как использовать MistralLite из кода Python (трансформеры HuggingFace)

Важный – Полный пример блокнота Jupyter см. эта ссылка.


Установите необходимые пакеты

Требует: трансформаторы 4.34.0 или новее, вспышка 2.3.1.post1 или более поздняя версия, и ускоряться 0.23.0 или новее.

pip install transformers==4.34.0
pip install flash-attn==2.3.1.post1 --no-build-isolation
pip install accelerate==0.23.0


Затем вы можете попробовать следующий пример кода

from transformers import AutoModelForCausalLM, AutoTokenizer
import transformers
import torch

model_id = "amazon/MistralLite"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id,
                                             torch_dtype=torch.bfloat16,
                                             use_flash_attention_2=True,
                                             device_map="auto",)
pipeline = transformers.pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)
prompt = "<|prompter|>What are the main challenges to support a long context for LLM?<|assistant|>"

sequences = pipeline(
    prompt,
    max_new_tokens=400,
    do_sample=False,
    return_full_text=False,
    num_return_sequences=1,
    eos_token_id=tokenizer.eos_token_id,
)
for seq in sequences:
    print(f"{seq['generated_text']}")

Важный – Используйте приведенный ниже шаблон запроса для MistralLite:

<|prompter|>What are the main challenges to support a long context for LLM?<|assistant|>


Как подавать MistralLite на TGI

Важный:

  • Полный пример блокнота Jupyter с использованием собственного контейнера TGI см. эта ссылка.
  • Если Длина входного контекста превышает 12 000 токеноврекомендуется использовать собственный контейнер TGI, см. эта ссылка.


Запустить сервер TGI

Используйте TGI версии 1.1.0 или новее. Официальный контейнер Docker: ghcr.io/huggingface/text-generation-inference:1.1.0

Пример параметров Docker:

docker run -d --gpus all --shm-size 1g -p 443:80 -v $(pwd)/models:/data ghcr.io/huggingface/text-generation-inference:1.1.0 \
      --model-id amazon/MistralLite \
      --max-input-length 16000 \
      --max-total-tokens 16384 \
      --max-batch-prefill-tokens 16384 \
      --trust-remote-code


Выполнить вывод

Пример кода Python для вывода с помощью TGI (требуется text_generation 0.6.1 или новее):

pip install text_generation==0.6.1
from text_generation import Client

SERVER_PORT = 443
SERVER_HOST = "localhost"
SERVER_URL = f"{SERVER_HOST}:{SERVER_PORT}"
tgi_client = Client(f"http://{SERVER_URL}", timeout=60)

def invoke_tgi(prompt, 
                      random_seed=1, 
                      max_new_tokens=400, 
                      print_stream=True,
                      assist_role=True):
    if (assist_role):
        prompt = f"<|prompter|>{prompt}<|assistant|>"
    output = ""
    for response in tgi_client.generate_stream(
        prompt,
        do_sample=False,
        max_new_tokens=max_new_tokens,
        return_full_text=False,
        
        
        
        
    ):
        if hasattr(response, "token"):
            if not response.token.special:
                snippet = response.token.text
                output += snippet
                if (print_stream):
                    print(snippet, end='', flush=True)
    return output

prompt = "What are the main challenges to support a long context for LLM?"
result = invoke_tgi(prompt)

Важный – При первом использовании MistralLite для вывода может потребоваться короткий период «разогрева», который может занять 10 секунд. Однако последующие выводы должны происходить быстрее и возвращать результаты более своевременно. Этот период прогрева является нормальным и не должен влиять на общую производительность системы после завершения периода инициализации.


Как развернуть MistralLite на Amazon SageMaker

Важный:

  • Полный пример блокнота Jupyter с использованием встроенного контейнера SageMaker см. эта ссылка.
  • Если Длина входного контекста превышает 12 000 токеноврекомендуется использовать собственный Docker-контейнер, см. эта ссылка.


Установите необходимые пакеты

Требует: мудрец 2.192.1 или новее.

pip install sagemaker==2.192.1


Развертывание модели в качестве конечной точки SageMaker

Чтобы развернуть MistralLite на конечной точке SageMaker, следуйте примеру кода, приведенному ниже.

import sagemaker
from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uri
import time

sagemaker_session = sagemaker.Session()
region = sagemaker_session.boto_region_name
role = sagemaker.get_execution_role()

image_uri = get_huggingface_llm_image_uri(
  backend="huggingface", 
  region=region,
 version="1.1.0"
)

model_name = "MistralLite-" + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime())

hub = {
    'HF_MODEL_ID':'amazon/MistralLite',
    'HF_TASK':'text-generation',
    'SM_NUM_GPUS':'1',
    "MAX_INPUT_LENGTH": '16000',
    "MAX_TOTAL_TOKENS": '16384',
    "MAX_BATCH_PREFILL_TOKENS": '16384',
    "MAX_BATCH_TOTAL_TOKENS":  '16384',
}

model = HuggingFaceModel(
    name=model_name,
    env=hub,
    role=role,
    image_uri=image_uri
)
predictor = model.deploy(
  initial_instance_count=1,
  instance_type="ml.g5.2xlarge",
  endpoint_name=model_name,
    
)


Выполнить вывод

Чтобы вызвать конечную точку, следуйте примеру кода, как показано ниже:

input_data = {
  "inputs": "<|prompter|>What are the main challenges to support a long context for LLM?<|assistant|>",
  "parameters": {
    "do_sample": False,
    "max_new_tokens": 400,
    "return_full_text": False,
    
    
    
    
  }
}
result = predictor.predict(input_data)[0]["generated_text"]
print(result)

или через бото3а пример кода показан ниже:

import boto3
import json
def call_endpoint(client, prompt, endpoint_name, paramters):
    client = boto3.client("sagemaker-runtime")
    payload = {"inputs": prompt,
               "parameters": parameters}
    response = client.invoke_endpoint(EndpointName=endpoint_name,
                                      Body=json.dumps(payload), 
                                      ContentType="application/json")
    output = json.loads(response["Body"].read().decode())
    result = output[0]["generated_text"]
    return result

client = boto3.client("sagemaker-runtime")
parameters = {
    "do_sample": False,
    "max_new_tokens": 400,
    "return_full_text": False,
    
    
    
    
}
endpoint_name = predictor.endpoint_name
prompt = "<|prompter|>What are the main challenges to support a long context for LLM?<|assistant|>"
result = call_endpoint(client, prompt, endpoint_name, parameters)
print(result)


Как обслуживать MistralLite на vLLM

Документация по установке и использованию vLLM можно найти здесь.

Важный – Полный пример блокнота Jupyter см. эта ссылка.


Использование vLLM в качестве сервера

При использовании vLLM в качестве сервера передайте параметр –model amazon/MistralLite, например:

python3 -m vllm.entrypoints.api_server --model amazon/MistralLite


Использование vLLM в коде Python

При использовании vLLM из кода Python см. пример кода, показанный ниже:

from vllm import LLM, SamplingParams

prompts = [
   "<|prompter|>What are the main challenges to support a long context for LLM?<|assistant|>",
]
sampling_params = SamplingParams(temperature=0, max_tokens=100)

llm = LLM(model="amazon/MistralLite",)

outputs = llm.generate(prompts, sampling_params)


for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")


Ограничения

Перед использованием модели MistralLite важно провести собственную независимую оценку и принять меры, гарантирующие, что ваше использование будет соответствовать вашим собственным конкретным практикам и стандартам контроля качества, а также местным правилам, законам и нормам. , лицензии и условия, применимые к вам и вашему контенту.

2023-11-01 15:43:58


1698855368
#amazonMistralLite #Обнимающее #лицо

Read more:  Розмари Хейн: Женщина, которая бросила еду в лицо работнику Chipotle, сократила срок тюремного заключения в необычной сделке с судьей | Новости США

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.