Mistral AI推超强边缘AI模型Ministral 8B,支持128000个token

最近,法国人工智能初创公司 Mistral AI 宣布了他们的新一代语言模型 ——Ministral3B 和 Ministral8B。

这两款新模型是 “Ministraux” 系列的一部分,专为边缘设备和边缘计算场景而设计,支持高达128,000个 token 的上下文长度。这意味着这些模型不仅处理能力强大,而且可以在数据隐私和本地处理尤为重要的情况下使用。

在这里插入图片描述
Mistral 表示,Ministraux 系列模型非常适合于一系列应用,例如本地翻译、离线智能助手、数据分析以及自主机器人技术。为了进一步提升效率,Ministraux 模型还可以与更大的语言模型(比如 Mistral Large)结合使用,作为多步骤工作流中的有效中介。

在性能上,Mistral 提供的基准测试显示,Ministral3B 和8B 在多个类别中都超过了许多同类模型,比如谷歌的 Gemma 2 2B 和 Meta 的 Llama3.1 8B。值得一提的是,尽管 Ministral3B 的参数数量较少,但在某些测试中,它的表现超越了其前身 Mistral 7B。

实际上,Mistral 8B 在所有测试中都表现优异,尤其是在知识、常识、功能调用和多语言能力等方面。

关于定价,Ministral AI 的这两款新模型已经可以通过 API 获取。Ministral 8B 的费用为每百万个 token0.10美元,而 Ministral 3B 则是0.04美元。此外,Mistral 还为研究用途提供了 Ministral 8B Instruct 的模型权重。值得注意的是,Mistral 的这两款新模型很快也会通过谷歌 Vertex 和 AWS 等云合作伙伴上线。

mistralai/Ministral-8B-Instruct-2410

我们为本地智能、设备计算和边缘用例引入了两种新的先进模型。 我们称之为 Ministraux: Ministral 3B 和 Ministral 8B。 Ministral-8B-Instruct-2410 语言模型是根据 Mistral Research License 发布的微调模型,其性能明显优于现有的同类模型。 如果您有兴趣在商业上使用 Ministral-3B 或 Ministral-8B,并使其性能优于 Mistral-7B,请联系我们。 有关 Ministraux 的更多详情,请参阅我们的发布博文。

Ministral 8B 主要特点

  • 根据 Mistral 研究许可证发布,如需商业许可证,请联系我们
  • 使用 128k 上下文窗口和交错滑动窗口注意力进行训练
  • 在大量多语言和代码数据上进行训练
  • 支持函数调用 词汇量为 131k,使用 V3-Tekken 标记化器

基本指令模板(V3-Tekken)

<s>[INST]user message[/INST]assistant response</s>[INST]new user message[/INST]

Ministral 8B 架构

FeatureValue
ArchitectureDense Transformer
Parameters8,019,808,256
Layers36
Heads32
Dim4096
KV Heads (GQA)8
Hidden Dim12288
Head Dim128
Vocab Size131,072
Context Length128k
Attention PatternRagged (128k,32k,32k,32k)

基准

Base Model

知识与常识

ModelMMLUAGIEvalWinograndeArc-cTriviaQA
Mistral 7B Base62.542.574.267.962.5
Llama 3.1 8B Base64.744.474.646.060.2
Ministral 8B Base65.048.375.371.965.5
Gemma 2 2B Base52.433.868.742.647.8
Llama 3.2 3B Base56.237.459.643.150.7
Ministral 3B Base60.942.172.764.256.7

代码与数学

ModelHumanEval pass@1GSM8K maj@8
Mistral 7B Base26.832.0
Llama 3.1 8B Base37.842.2
Ministral 8B Base34.864.5
Gemma 2 2B20.135.5
Llama 3.2 3B14.633.5
Ministral 3B34.250.9

多种语言

ModelFrench MMLUGerman MMLUSpanish MMLU
Mistral 7B Base50.649.651.4
Llama 3.1 8B Base50.852.854.6
Ministral 8B Base57.557.459.6
Gemma 2 2B Base41.040.141.7
Llama 3.2 3B Base42.342.243.1
Ministral 3B Base49.148.349.5

Instruct Models

ModelMTBenchArena HardWild bench
Mistral 7B Instruct v0.36.744.333.1
Llama 3.1 8B Instruct7.562.437.0
Gemma 2 9B Instruct7.668.743.8
Ministral 8B Instruct8.370.941.3
Gemma 2 2B Instruct7.551.732.5
Llama 3.2 3B Instruct7.246.027.2
Ministral 3B Instruct8.164.336.3

代码与数学

ModelMBPP pass@1HumanEval pass@1Math maj@1
Mistral 7B Instruct v0.350.238.413.2
Gemma 2 9B Instruct68.567.747.4
Llama 3.1 8B Instruct69.767.149.3
Ministral 8B Instruct70.076.854.5
Gemma 2 2B Instruct54.542.722.8
Llama 3.2 3B Instruct64.661.038.4
Ministral 3B Instruct67.777.451.7

Demo

vLLM

pip install --upgrade vllm
pip install --upgrade mistral_common
from vllm import LLM
from vllm.sampling_params import SamplingParamsmodel_name = "mistralai/Ministral-8B-Instruct-2410"sampling_params = SamplingParams(max_tokens=8192)# note that running Ministral 8B on a single GPU requires 24 GB of GPU RAM
# If you want to divide the GPU requirement over multiple devices, please add *e.g.* `tensor_parallel=2`
llm = LLM(model=model_name, tokenizer_mode="mistral", config_format="mistral", load_format="mistral")prompt = "Do we need to think for 10 seconds to find the answer of 1 + 1?"messages = [{"role": "user","content": prompt},
]outputs = llm.chat(messages, sampling_params=sampling_params)print(outputs[0].outputs[0].text)
# You don't need to think for 10 seconds to find the answer to 1 + 1. The answer is 2,
# and you can easily add these two numbers in your mind very quickly without any delay.

Server

vllm serve mistralai/Ministral-8B-Instruct-2410 --tokenizer_mode mistral --config_format mistral --load_format mistral

:在单 GPU 上运行 Ministral-8B 需要 24 GB GPU 内存。

如果要将 GPU 需求分配给多个设备,请添加 --tensor_parallel=2 等信息

Client

curl --location 'http://<your-node-url>:8000/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer token' \
--data '{"model": "mistralai/Ministral-8B-Instruct-2410","messages": [{"role": "user","content": "Do we need to think for 10 seconds to find the answer of 1 + 1?"}]
}'

Mistral-inference

pip install mistral_inference --upgrade

下载

from huggingface_hub import snapshot_download
from pathlib import Pathmistral_models_path = Path.home().joinpath('mistral_models', '8B-Instruct')
mistral_models_path.mkdir(parents=True, exist_ok=True)snapshot_download(repo_id="mistralai/Ministral-8B-Instruct-2410", allow_patterns=["params.json", "consolidated.safetensors", "tekken.json"], local_dir=mistral_models_path)

Chat

mistral-chat $HOME/mistral_models/8B-Instruct --instruct --max_tokens 256

密码检测

在本示例中,密钥信息有超过 10 万个标记,而 mistral-inference 没有分块预填充机制。 因此,运行下面的示例需要大量 GPU 内存(80 GB)。 如果想获得更节省内存的解决方案,我们建议使用 vLLM。

from mistral_inference.transformer import Transformer
from pathlib import Path
import json
from mistral_inference.generate import generate
from huggingface_hub import hf_hub_downloadfrom mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequestdef load_passkey_request() -> ChatCompletionRequest:passkey_file = hf_hub_download(repo_id="mistralai/Ministral-8B-Instruct-2410", filename="passkey_example.json")with open(passkey_file, "r") as f:data = json.load(f)message_content = data["messages"][0]["content"]return ChatCompletionRequest(messages=[UserMessage(content=message_content)])tokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tekken.json")
model = Transformer.from_folder(mistral_models_path, softmax_fp32=False)completion_request = load_passkey_request()tokens = tokenizer.encode_chat_completion(completion_request).tokensout_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)  # The pass key is 13005.

指导如下

from mistral_inference.transformer import Transformer
from mistral_inference.generate import generatefrom mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequesttokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tekken.json")
model = Transformer.from_folder(mistral_models_path)completion_request = ChatCompletionRequest(messages=[UserMessage(content="How often does the letter r occur in Mistral?")])tokens = tokenizer.encode_chat_completion(completion_request).tokensout_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)

Function calling

from mistral_common.protocol.instruct.tool_calls import Function, Tool
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generatefrom mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
from mistral_common.tokens.tokenizers.tekken import SpecialTokenPolicytokenizer = MistralTokenizer.from_file(f"{mistral_models_path}/tekken.json")
tekken = tokenizer.instruct_tokenizer.tokenizer
tekken.special_token_policy = SpecialTokenPolicy.IGNOREmodel = 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).tokensout_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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454077.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 字符串解码

该代码的算法思想可以分为以下几个步骤&#xff1a; 1. 使用栈来处理嵌套结构&#xff1a; 我们需要处理像 k[encoded_string] 这种格式&#xff0c;其中的 encoded_string 可能是嵌套的&#xff0c;即像 3[a2[c]] 这样的输入。因此&#xff0c;我们可以借助 栈&#xff08;S…

springboot 项目集成spring security(极简版)

背景 当服务需要暴露于公网的时候&#xff0c;经常需要有登录功能。通过sping security 进行一个简单的登录功能。 导入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

Android Framework AMS(06)startActivity分析-3(补充:onPause和onStop相关流程解读)

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读AMS通过startActivity启动Activity的整个流程的补充&#xff0c;更新了startActivity流程分析部分。 一般来说&#xff0c;有Activ…

第 2 章 ROS通信机制

机器人是一种高度复杂的系统性实现&#xff0c;在机器人上可能集成各种传感器(雷达、摄像头、GPS...)以及运动控制实现&#xff0c;为了解耦合&#xff0c;在ROS中每一个功能点都是一个单独的进程&#xff0c;每一个进程都是独立运行的。更确切的讲&#xff0c;ROS是进程&#…

关于Linux自带的python2.6.6升级到2.7.5版本步骤详解

CentOS 6 系统默认 Python 版本是:2.6.6 平时在使用中遇到很多的库要求是 2.7.x 版本的库。比如使用UFR升级启动脚本用python2.6.6的版本启动状态检测报错: 第一步:安装相关的编译依赖包: [root@testhost250 ~]# sudo yum install -y gcc [root@testhost250 ~]# sudo yum …

使用JMeter录制元件来录制HTTPS下的脚本

1.给测试计划添加一个线程组 2.给线程组添加【HTTP请求默认值】 3.配置【HTTP请求默认值】下面的【web服务器】参数&#xff0c;这里举例为www.baidu.com 4.在测试计划(注意是测试计划哦)上添加【非测试元件】->【HPPT(S)测试脚本记录器】 5.记下默认端口号&#xff0c;此处…

浏览器控制的无线开关

esp32-c3 作为HTTP server 控制led 灯。服务器注册两个uri 。一个"/open" 控制开&#xff0c;一个"/close"控制关。下一步再用一片c3作为客户端&#xff0c;运行http client 发送/open. /Close 模拟浏览器&#xff0c;控制led. 其实只要用手机或pc或平…

Apache Lucene 10 已发布!Lucene 硬件效率改进及其他改进

作者&#xff1a;来自 Elastic Adrien Grand Apache Lucene 10 刚刚发布&#xff0c;重点关注硬件效率&#xff01;查看主要版本亮点。 Apache Lucene 10 终于发布了&#xff01;自 Lucene 9.0&#xff08;于 2021 年 12 月发布&#xff0c;距今已有近 3 年&#xff09;以来&a…

C++20中头文件source_location的使用

<source_location>是C20中新增加的头文件&#xff0c;此头文件是utility库的一部分。 主要内容为类std::source_location&#xff1a;表示有关源代码的某些信息&#xff0c;例如文件名(__FILE__)、行号(__LINE__)和函数名(__func__)。 以下为测试代码&#xff1a; names…

Redis 高可用:从主从到集群的全面解析

目录 一、主从复制 (基础)1. 同步复制a. 全量数据同步b. 增量数据同步c. 可能带来的数据不一致 2. 环形缓冲区a. 动态调整槽位 3. runid4. 主从复制解决单点故障a. 单点故障b. 可用性问题 5. 注意事项a. Replica 主动向 Master 建立连接b. Replica 主动向 Master 拉取数据 二、…

Vue+TypeScript+SpringBoot的WebSocket基础教学

成品图&#xff1a; 对WebSocket的理解&#xff08;在使用之前建议先了解Tcp&#xff0c;三次握手&#xff0c;四次挥手 &#xff09;&#xff1a; 首先页面与WebSocket建立连接、向WebSocket发送信息、后端WebSocket向所有连接上WebSoket的客户端发送当前信息。 推荐浏览网站…

【网络原理】HTTP协议

目录 前言 一.什么是HTTP HTTP报文格式 HTTP的请求格式 1.首行 2.请求头&#xff08;header&#xff09; 3.空行 4.正文&#xff08;body&#xff09; HTTP的响应格式 1.首行 2.响应头 3.空行 4.正文&#xff08;body&#xff09; 首行中的方法 GET和POST的区别 …

linux中级wed服务器(https搭建加密服务器)

一。非对称加密算法&#xff1a; 公钥&#xff1a;公共密钥&#xff0c;开放 私钥&#xff1a;私有密钥&#xff0c;保密 1.发送方用自己的公钥加密&#xff0c;接受方用发送方的私钥解密&#xff1a;不可行 2.发送方用接受方的公钥加密&#xff0c;接受方用自己的私钥解密…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性&#xff0c;实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型&#xff0c;其通过深度学习技术&#xff0c;如卷…

spark统一内存模型 详解

Apache Spark 是一个用于大规模数据处理的分布式计算框架&#xff0c;它支持多种处理模型&#xff08;如批处理、流处理、SQL、机器学习等&#xff09;。为了高效地在分布式环境中处理这些多样化的工作负载&#xff0c;Spark 在 2.x 版本后引入了统一内存管理模型&#xff0c;以…

Mycat2安装配置

安装配置 安装 目前Mycat2下载地址已经不可访问&#xff0c;安装包可从参考资料[1]获取 下载后解压zip文件&#xff0c;将jar放在lib目录下 编辑配置文件 编辑conf文件夹下的prototypeDs.datasource.json 更改数据库相关信息 启动 windows环境下启动Mycat 以管理员身份运行…

Linux重点yum源配置

1.配置在线源 2.配置本地源 3.安装软件包 4.测试yum源配置 5.卸载软件包

Git 完整教程:版本管理、分支操作与远程仓库解析

文章目录 一、引言二、Git原理三、.git目录四、版本回退以及撤销修改五、Git远程控制1、创建仓库2、克隆/下载远程仓库到本地的方法3、本地仓库的修改推送到远程仓库4、拉取远程仓库的修改到本地仓库5、操作标签 六、Git分支1、分支操作&#xff08;创建、删除、合并&#xff0…

九种排序,一次满足

我们在算法题进行练习提升时&#xff0c;经常会看到题目要求数据从大到小输出&#xff0c;从小到大输出&#xff0c;前一半从小到大输出&#xff0c;后一半从大到小输出等&#xff0c;那么这时候就需要用到排序算法&#xff0c;通过排序算法将数据按照一定的顺序进行排序。本文…

排序02 Multi-gate Mixture-of-Experts (MMoE)

MMoE: 不一定适合业务场景 输入向量&#xff08;包含四种特征&#xff09;到三个神经网络&#xff08;专家&#xff09;&#xff0c;不共享参数。实践中超参数专家神经网络个数需要调&#xff0c;会尝试4个或者8个专家。 左边另一个神经网络softmax输出的向量&#xff0c;三个…