人工智能
Mistral 2 和 Mistral NeMo:巴黎最新法学硕士综合指南

由谷歌 DeepMind 和 Meta 的校友创立,总部位于巴黎的初创公司 西北风人工智能 自 2023 年以来一直在 AI 社区引起轰动。
Mistral AI 首次引起世界关注是在 7 年发布的首款模型 Mistral 2023B。这个拥有 7 亿参数的模型因其令人印象深刻的性能而迅速获得关注,在各种基准测试中超越了 Llama 2 13B 等更大的模型,甚至可以与 骆驼 1 34B 在许多指标中。什么设置 米斯特拉尔7B 与众不同的不仅仅是它的性能,还有它的可访问性——该模型可以很容易地 从GitHub下载 甚至可以通过 13.4 GB 的 torrent 进行下载,让世界各地的研究人员和开发人员可以随时使用。
该公司打破常规的发布方式,往往摒弃传统的论文、博客或新闻稿,这在吸引人工智能社区的关注方面非常有效。这一策略,加上他们对开源原则的承诺,使 Mistral AI 成为人工智能领域中一个强大的参与者。
Mistral AI 在行业中的快速崛起,其近期的融资成功更是锦上添花。在由 Andreessen Horowitz 领投的一轮融资后,该公司估值高达 2 亿美元。此前,该公司刚刚完成了历史性的 118 亿美元种子轮融资,创下了欧洲历史上最大的融资纪录,这充分展现了投资者对 Mistral AI 愿景和能力的坚定信心。
除了技术进步之外,Mistral AI 还积极参与制定人工智能政策,特别是在欧盟人工智能法案的讨论中,他们主张减少对开源人工智能的监管。
如今,到了 2024 年,Mistral AI 凭借两种突破性的模型再次提升了标准: 米斯特拉尔 大号 2 (也称为 Mistral-Large-Instruct-2407)和 米斯特拉尔·尼莫。在本综合指南中,我们将深入探讨这些令人印象深刻的 AI 模型的特性、性能和潜在应用。
Mistral Large 2 的主要规格包括:
- 123十亿 参数
- 128k 上下文窗口
- 支持数十种语言
- 精通 80+ 编码 语言
- 高级函数调用功能
该模型旨在突破成本效率、速度和性能的界限,使其成为希望利用尖端人工智能的研究人员和企业的一个有吸引力的选择。
Mistral NeMo:新款小型飞机
虽然 Mistral Large 2 代表了 Mistral AI 大规模模型的巅峰水平,但 2024 年 12 月发布的 Mistral NeMo 却另辟蹊径。Mistral NeMo 与 NVIDIA 合作开发,是一个更紧凑的 XNUMX 亿参数模型,但仍具备令人印象深刻的功能:
- 12十亿 参数
- 128k上下文 窗口
- 同尺寸产品中性能最强
- Apache 2.0许可证 供开放使用
- 量化感知 训练以进行有效推理
Mistral NeMo 的定位是作为目前使用 Mistral 7B 的系统的直接替代品,提供增强的性能,同时保持易用性和兼容性。
主要特点和能力
Mistral Large 2 和 Mistral NeMo 都具有几个关键特征,使它们在 AI 领域脱颖而出:
- 大上下文窗口:凭借 128k 个标记上下文长度,两种模型都可以处理和理解更长的文本,从而实现更连贯、更符合上下文的输出。
- 多语言支持:这些模型擅长多种语言,包括英语、法语、德语、西班牙语、意大利语、中文、日语、韩语、阿拉伯语和印地语。
- 先进的编码能力:两种模型都表现出跨多种编程语言的代码生成能力。
- 遵循指令:模型遵循精确指令和处理多轮对话的能力得到了显著提高。
- 函数调用:对函数调用的本机支持允许这些模型与外部工具和服务动态交互。
- 推理和解决问题:增强数学推理和解决复杂问题的能力。
让我们探索其中的一些功能并检查它们在实践中的表现。
性能基准
要了解 Mistral Large 2 和 Mistral NeMo 的真正性能,必须了解它们在各种基准测试中的表现。让我们来看看一些关键指标:
Mistral Large 2 基准
下表列出了各种 LLM 对不同编程语言的熟练程度。Mistral Large 2 (24.07)、Llama 3.1 (405B) 和 GPT-4o 等模型的评估依据是它们理解和生成 Python、C++、Bash、Java、TypeScript、PHP 和 C# 等语言代码的能力。
Llama 3.1 405B 在多种语言中表现出色,在 Python 和 Java 中的得分尤其高。这种熟练程度对于涉及代码生成、调试和软件开发的应用程序至关重要,使这些模型成为开发人员的宝贵工具。
Mistral NeMo 基准
虽然信息中没有提供 Mistral NeMo 的具体基准测试分数,但它被描述为在同尺寸类别中提供了最先进的性能。该模型在各种任务中的表现都优于其他近期开源的预训练模型,例如 Gemma 2 9B 和 Llama 3 8B。
多语言和编码能力
Mistral Large 2 和 Mistral NeMo 的突出特点之一是其出色的多语言能力。这在我们日益全球化的世界中尤为重要,因为人工智能模型需要理解和生成多种语言的内容。
例如,Mistral Large 2 支持数十种语言,包括法语、德语、西班牙语、意大利语、葡萄牙语、阿拉伯语、印地语、俄语、中文、日语和韩语。这种多语言能力不仅限于单纯的翻译,还包括对这些语言的细致理解和生成。
为了说明这一点,我们来看一个 Mistral Large 2 生成多种语言文本的示例:
[INST] Generate a short greeting in English, French, German, Spanish, and Japanese. [/INST]
以下是所要求语言的简短问候语:
英语:你好!你今天感觉怎么样?
法语:你好!评论 allez-vous ajourd'hui 吗?
德语:哈喽!这是什么时候?
西班牙语:¡Hola!怎么样?
日语:こんにちは!今日はお元気ですか?
[仪器]
现在,用 Python、Java 和 JavaScript 编写一个简单的“Hello, World!”程序。[/INST]
这些示例展示了该模型的多语言文本生成和编码功能。
两种模型均可在各种平台上使用,例如 Hugging Face、Mistral AI 平台以及 Google Cloud Platform、Azure AI Studio、Amazon Bedrock 和 IBM watsonx.ai 等主要云服务提供商。 (Mistral AI | 你手中的前沿人工智能)。
代理范式和函数调用
Mistral Large 2 和 Mistral NeMo 都采用了以代理为中心的设计,这代表了我们与 AI 模型交互方式的范式转变。这种方法侧重于构建能够与环境交互、做出决策并采取行动实现特定目标的模型。
实现此范例的一个关键特性是对函数调用的原生支持。这使得模型能够与外部工具和服务动态交互,从而有效地将其功能扩展到简单的文本生成之外。
让我们看一个示例,了解函数调用如何与 Mistral Large 2 配合使用:
from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_inference.transformer 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
# Initialize tokenizer and model
mistral_models_path = "path/to/mistral/models" # Ensure this path is correct
tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tokenizer.model.v3")
model = Transformer.from_folder(mistral_models_path)
# Define a function for getting weather information
weather_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 user's location.",
},
},
"required": ["location", "format"],
},
)
# Create a chat completion request with the function
completion_request = ChatCompletionRequest(
tools=[Tool(function=weather_function)],
messages=[
UserMessage(content="What's the weather like today in Paris?"),
],
)
# Encode the request
tokens = tokenizer.encode_chat_completion(completion_request).tokens
# Generate a response
out_tokens, _ = generate([tokens], model, max_tokens=256, temperature=0.7, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(out_tokens[0])
print(result)
在此示例中,我们定义了一个用于获取天气信息的函数,并将其包含在聊天完成请求中。然后,模型可以使用此函数检索实时天气数据,展示它如何与外部系统交互以提供更准确、最新的信息。
铁拳:更高效的标记器
Mistral NeMo 推出了一款新的标记器,名为 铁拳,它基于 Tiktoken 并经过 100 多种语言的训练。与之前的标记器(如 SentencePiece)相比,这款新标记器在文本压缩效率方面有显著的提高。
铁拳的主要特点包括:
- 源代码、中文、意大利语、法语、德语、西班牙语和俄语的压缩效率提高 30%
- 韩语压缩效率提高 2 倍
- 阿拉伯语压缩效率提高 3 倍
- 对于大约 3% 的语言,其文本压缩效果优于 Llama 85 标记器
这种改进的标记化效率意味着更好的模型性能,尤其是在处理多语言文本和源代码时。它允许模型在同一个上下文窗口内处理更多信息,从而产生更连贯和上下文相关的输出。
许可和可用性
Mistral Large 2 和 Mistral NeMo 具有不同的许可模式,反映了它们的预期用例:
米斯特拉尔 大号 2
- 根据 Mistral 研究许可证发布
- 允许出于研究和非商业目的使用和修改
- 商业用途需要 Mistral 商业许可证
米斯特拉尔·尼莫
- 在 Apache 2.0 许可下发布
- 允许开放使用,包括商业应用
两种型号均可通过多种平台购买:
- 抱脸: 基础模型和指导模型的权重都托管在这里
- 西北风人工智能: 可用作
mistral-large-2407(Mistral Large 2)和open-mistral-nemo-2407(米斯特拉尔·尼莫) - 云服务提供商:可在 Google Cloud Platform 的 Vertex AI、Azure AI Studio、Amazon Bedrock 和 IBM watsonx.ai 上使用
对于希望使用这些模型的开发人员,这里有一个关于如何加载和使用 Mistral Large 2 与 Hugging Face 变换器的简单示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "mistralai/Mistral-Large-Instruct-2407"
device = "cuda" # Use GPU if available
# Load the model and tokenizer
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Move the model to the appropriate device
model.to(device)
# Prepare input
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Explain the concept of neural networks in simple terms."}
]
# Encode input
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
# Generate response
output_ids = model.generate(input_ids, max_new_tokens=500, do_sample=True)
# Decode and print the response
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(response)
此代码演示了如何加载模型、以聊天格式准备输入、生成响应以及解码输出。
















