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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
-
拉取模型
-
模型信息 (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
模型详情¶
MistralLite 是一个对 Mistral-7B-v0.1 语言模型进行了微调的版本,增强了处理长上下文(最高32K令牌)的能力。通过在微调过程中使用适配的旋转嵌入和滑动窗口,MistralLite 在多个长上下文检索和回答任务上的表现有了显著提升,同时保持了原始模型的简单结构。MistralLite 适用于长上下文线和主题检索、摘要、问答等应用。MistralLite 可以部署在单个 AWS g5.2x
实例上,并通过 Sagemaker Huggingface 文本生成推理 (TGI) 端点使用,适用于需要在资源受限的环境中高性能的应用。您还可以直接使用 TGI Docker 容器提供 MistralLite 模型服务。此外,MistralLite 还支持其他服务方式,如 vLLM,并且可以通过使用 HuggingFace transformers 和 FlashAttention-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 的基础上 显著提升了处理长上下文的性能
。详细的 长上下文评估结果
如下:
-
模型名称 输入长度 输入长度 输入长度 输入长度 输入长度 2851 5568 8313 11044 13780 Mistral-7B-Instruct-v0.1 100% 50% 2% 0% 0% MistralLite 100% 100% 100% 100% 98% -
模型名称 输入长度 输入长度 输入长度 输入长度 输入长度 输入长度 3818 5661 7505 9354 11188 12657 Mistral-7B-Instruct-v0.1 98% 62% 42% 42% 32% 30% MistralLite 98% 92% 88% 76% 70% 60% -
模型名称 输入长度 输入长度 输入长度 输入长度 3264 5396 8329 10197 Mistral-7B-Instruct-v0.1 100% 50% 20% 30% MistralLite 100% 100% 100% 100% -
模型名称 测试集准确率 困难子集准确率 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.
模型详情¶
- 开发者: AWS 贡献者
- 模型类型: Mistral-7B-v0.1
- 语言: 英语
- 基于权重微调: Mistral-7B-v0.1
- 微调数据:
- 支持的服务框架:
- 模型许可证: Apache 2.0
- 联系方式: GitHub 问题
- 推理代码 GitHub 仓库
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:
如何在 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 或更高版本):
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 或更高版本。
将模型部署为 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 参数,例如:
在 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 模型之前,重要的是进行您自己的独立评估,并采取措施确保您的使用符合您自己的特定质量控制实践和标准,并且您的使用符合适用于您及您的内容的当地规则、法律、法规、许可证和条款。