项目介绍:Mistral-7B-Instruct-v0.3
项目概述
Mistral-7B-Instruct-v0.3是一个大语言模型项目,它是基于Mistral-7B-v0.3进行了指令微调的版本。该模型通过在多种任务和数据集上的表现展示了其强大的文本生成能力。
模型特点
与之前的版本(Mistral-7B-v0.2)相比,Mistral-7B-v0.3做出了以下改进:
- 拓展了词汇表至32768个词条。
- 支持v3版本的分词器。
- 支持函数调用功能。
使用指南
安装与下载
使用mistral_inference
工具来操作该模型。安装过程非常简单,只需执行以下命令:
pip install mistral_inference
下载和安装模型:
from huggingface_hub import snapshot_download
from pathlib import Path
mistral_models_path = Path.home().joinpath('mistral_models', '7B-Instruct-v0.3')
mistral_models_path.mkdir(parents=True, exist_ok=True)
snapshot_download(repo_id="mistralai/Mistral-7B-Instruct-v0.3", allow_patterns=["params.json", "consolidated.safetensors", "tokenizer.model.v3"], local_dir=mistral_models_path)
模型应用
聊天应用:
在安装mistral_inference
后,可以在命令行中使用mistral-chat
命令与模型进行对话:
mistral-chat $HOME/mistral_models/7B-Instruct-v0.3 --instruct --max_tokens 256
指令生成:
可以在Python中利用代码控制模型的生成:
from mistral_inference.model import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)
completion_request = ChatCompletionRequest(messages=[UserMessage(content="Explain Machine Learning to me in a nutshell.")])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.instruct_tokenizer.tokenizer.decode(out_tokens[0])
print(result)
函数调用
模型不仅支持文本生成,还可用于调用特定功能,如获取天气信息:
from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_inference.model import Transformer
from mistral_inference.generate import generate
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)
completion_request = ChatCompletionRequest(
tools=[
Tool(
function=Function(
name="get_current_weather",
description="Get the current weather",
parameters={
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"format": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The temperature unit to use. Infer this from the users location.",
},
},
"required": ["location", "format"],
},
)
)
],
messages=[
UserMessage(content="What's the weather like today in Paris?"),
],
)
tokens = tokenizer.encode_chat_completion(completion_request).tokens
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.instruct_tokenizer.tokenizer.decode(out_tokens[0])
print(result)
评价与性能
Mistral-7B-Instruct-v0.3在多个知名数据集上的测试结果如下:
- AI2 Reasoning Challenge (25次少样本):63.91%的标准化准确率
- HellaSwag (10次少样本):84.82%的标准化准确率
- MMLU (5次少样本):62.58%的准确率
- TruthfulQA (0次样本):59.45%的准确率
- Winogrande (5次少样本):78.37%的准确率
- GSM8k (5次少样本):42.15%的准确率
局限性
Mistral-7B-Instruct模型仅展示了基础模型通过微调能达到的性能,并未配备任何内容审核机制。因此,在特定需要输出控制或审核的环境中使用时,需谨慎考虑。
开发团队
该项目由Mistral AI团队开发,团队成员包括阿尔波特·江、亚历山大·塞布拉罗尔斯、亚历克西斯·塔克内特等多位专家共同努力。有关更详细的评估结果,可以访问Open LLM Leaderboard页面。