跳转至

MistralLite

  • 拉取模型

    ollama run mistrallite
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit 5393d4f5f262 · 4.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit 5393d4f5f262 · 4.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q4_0
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit 5393d4f5f262 · 4.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q4_1
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit 00a4a71eee8f · 4.6GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q5_0
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 5-bit 751a158ec222 · 5.0GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q5_1
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 5-bit e09d24104dd5 · 5.4GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q8_0
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 8-bit 8856fb347897 · 7.7GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q2_K
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 2-bit 32164f7b30a5 · 3.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q3_K_S
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 3-bit ebf457323d7d · 3.2GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q3_K_M
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 3-bit 366ee513d776 · 3.5GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q3_K_L
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 3-bit bb7562f0532f · 3.8GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q4_K_S
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit 81a8a1744387 · 4.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q4_K_M
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 4-bit d73bbd6b49d1 · 4.4GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q5_K_S
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 5-bit 6b71023e7195 · 5.0GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q5_K_M
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 5-bit 7a3f8c87136f · 5.1GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-q6_K
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization 6-bit c63d67539934 · 5.9GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B
  • 拉取模型

    ollama run mistrallite:7b-v0.1-fp16
    
  • 模型信息 (model)

    Manifest Info Size
    model arch llama parameters 7B quantization F16 a6c59d49e2a9 · 14GB
    template <|prompter|>{{ .System }} {{ .Prompt }}</s><|assistant|> 57B
    params {"num_ctx":32768,"stop":["<|prompter|>","<|assistant|>","</s>"]} 94B

模型详情

MistralLite 是一个对 Mistral-7B-v0.1 语言模型进行了微调的版本,增强了处理长上下文(最高32K令牌)的能力。通过在微调过程中使用适配的旋转嵌入和滑动窗口,MistralLite 在多个长上下文检索和回答任务上的表现有了显著提升,同时保持了原始模型的简单结构。MistralLite 适用于长上下文线和主题检索、摘要、问答等应用。MistralLite 可以部署在单个 AWS g5.2x 实例上,并通过 Sagemaker Huggingface 文本生成推理 (TGI) 端点使用,适用于需要在资源受限的环境中高性能的应用。您还可以直接使用 TGI Docker 容器提供 MistralLite 模型服务。此外,MistralLite 还支持其他服务方式,如 vLLM,并且可以通过使用 HuggingFace transformersFlashAttention-2 库在 Python 中使用 MistralLite。

MistralLite 与 Mistral-7B-Instruct-v0.1 相似,它们的相似处和不同点如下所述:

模型 针对长上下文的微调 最大上下文长度 旋转嵌入适配 滑动窗口大小
Mistral-7B-Instruct-v0.1 最多 8K 令牌 32K rope_theta = 10000 4096
MistralLite 最多 16K 令牌 32K rope_theta = 1000000 16384

重要 - 使用以下提示模板进行 MistralLite 的调用:

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

开发 MistralLite 的动机

自从 Mistral-7B-Instruct-v0.1 发布以来,该模型因其在广泛基准测试上的强大表现而日益流行。但大多数基准测试评估的是 短上下文,而对其在长上下文任务上的表现研究不多。然后我们对 Mistral-7B-Instruct-v0.1 进行了针对专门设计来评估 LLM 处理更长上下文能力的基准测试。虽然该模型在少于 4096 令牌的长上下文上的表现相当有竞争力,但在更长的上下文上存在一些性能限制。出于提高其在长上下文上的表现的动机,我们对 Mistral 7B 模型进行了微调,生产出了 Mistrallite。该模型设法在 Mistral-7B-Instruct-v0.1 的基础上 显著提升了处理长上下文的性能。详细的 长上下文评估结果 如下:

  1. 主题检索

    模型名称 输入长度 输入长度 输入长度 输入长度 输入长度
    2851 5568 8313 11044 13780
    Mistral-7B-Instruct-v0.1 100% 50% 2% 0% 0%
    MistralLite 100% 100% 100% 100% 98%
  2. 行检索

    模型名称 输入长度 输入长度 输入长度 输入长度 输入长度 输入长度
    3818 5661 7505 9354 11188 12657
    Mistral-7B-Instruct-v0.1 98% 62% 42% 42% 32% 30%
    MistralLite 98% 92% 88% 76% 70% 60%
  3. 密钥检索

    模型名称 输入长度 输入长度 输入长度 输入长度
    3264 5396 8329 10197
    Mistral-7B-Instruct-v0.1 100% 50% 20% 30%
    MistralLite 100% 100% 100% 100%
  4. 长文本输入问答

    模型名称 测试集准确率 困难子集准确率
    Mistral-7B-Instruct-v0.1 44.3% 39.7%
    MistralLite 64.4% 56.2%

长上下文13400令牌的示例测试

  • 上下文来源于 Amazon Aurora 常见问题解答
  • 问题:请告诉我 pgvector 如何在生成式人工智能中帮助,并给出一些例子。
  • MistralLite 的回答:

    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 LM-评估结果

方法论

  • 详情请见 https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
  • revision=4ececff
  • 注意:我们使用的是 --model hf-causal-experimental 而不是 --model hf-causal

结果

平均 hellaswag arc_challenge truthful_qa (mc2) MMLU (准确率)
0.57221 0.81617 0.58874 0.38275 0.5012

如何从 Python 代码中使用 MistralLite (HuggingFace transformers)

重要提示 - 有关端到端示例 Jupyter 笔记本,请参阅 此链接

安装必要的软件包

需要:transformers 4.34.0 或更高版本,flash-attn 2.3.1.post1 或更高版本, 以及 accelerate 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?</s><|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?</s><|assistant|>

如何在 TGI 上服务 MistralLite

重要: - 若要使用原生 TGI 容器的端到端示例 Jupyter 笔记本,请参阅 此链接。 - 如果 输入上下文长度超过 12K 令牌,建议使用自定义 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

执行推理

使用 TGI 进行推理的示例 Python 代码(需要 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}</s><|assistant|>"
    output = ""
    for response in tgi_client.generate_stream(
        prompt,
        do_sample=False,
        max_new_tokens=max_new_tokens,
        return_full_text=False,
        #temperature=None,
        #truncate=None,
        #seed=random_seed,
        #typical_p=0.2,
    ):
        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 进行推理时,可能需要较短的“预热”时间,这可能需要数十秒。然而,后续的推理应该会更快,并且返回结果更及时。这种预热期是正常的,一旦完成初始化后,不应影响系统的整体性能。

如何在 Amazon SageMaker 上部署 MistralLite

重要: - 若要使用 SageMaker 内置容器的端到端示例 Jupyter 笔记本,请参考 此链接。 - 如果 输入上下文长度超过 12K 令牌,建议使用自定义 docker 容器,请参考 此链接

安装必要的软件包

需要:sagemaker 2.192.1 或更高版本。

pip install sagemaker==2.192.1

将模型部署为 SageMaker 端点

要在 SageMaker 端点上部署 MistralLite,请按照下面的示例代码进行操作。

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", # or lmi
  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?</s><|assistant|>",
  "parameters": {
    "do_sample": False,
    "max_new_tokens": 400,
    "return_full_text": False,
    #"typical_p": 0.2,
    #"temperature":None,
    #"truncate":None,
    #"seed": 1,
  }
}
result = predictor.predict(input_data)[0]["generated_text"]
print(result)

或通过 boto3 调用,示例代码如下所示:

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,
    #"typical_p": 0.2,
    #"temperature":None,
    #"truncate":None,
    #"seed": 1,
}
endpoint_name = predictor.endpoint_name
prompt = "<|prompter|>What are the main challenges to support a long context for LLM?</s><|assistant|>"
result = call_endpoint(client, prompt, endpoint_name, parameters)
print(result)

如何在 vLLM 上服务 MistralLite

安装和使用 vLLM 的文档 可以在这里找到

重要 - 若要使用 vLLM 的端到端示例 Jupyter 笔记本,请参考 此链接

将 vLLM 作为服务器使用

在使用 vLLM 作为服务器时,传递 --model amazon/MistralLite 参数,例如:

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

在 Python 代码中使用 vLLM

在 Python 代码中使用 vLLM 时,请参见以下示例代码:

from vllm import LLM, SamplingParams

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

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

outputs = llm.generate(prompts, sampling_params)

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

限制

在使用 MistralLite 模型之前,重要的是进行您自己的独立评估,并采取措施确保您的使用符合您自己的特定质量控制实践和标准,并且您的使用符合适用于您及您的内容的当地规则、法律、法规、许可证和条款。