☰
Mistral Medium 3.5 128B与vLLM集成:构建高性能AI服务的完整方案
2026/11/3 18:29:40 网站建设 项目流程

Mistral Medium 3.5 128B与vLLM集成:构建高性能AI服务的完整方案

【免费下载链接】Mistral-Medium-3.5-128B项目地址: https://ai.gitcode.com/hf_mirrors/mistralai/Mistral-Medium-3.5-128B

Mistral Medium 3.5 128B是一款具有1280亿参数的强大AI模型,支持256k上下文窗口,能够处理指令遵循、推理和编码等多种任务。将其与vLLM集成,可以构建高性能的AI服务,满足生产环境的需求。本文将详细介绍如何实现Mistral Medium 3.5 128B与vLLM的集成,包括安装、部署和优化等方面的内容。

为什么选择Mistral Medium 3.5 128B与vLLM集成

Mistral Medium 3.5 128B具有以下核心优势:

  • 强大的性能:在各项基准测试中表现优异,如在τ³-Telecom上达到91.4%的得分,在SWE-Bench Verified上达到77.6%的得分。
  • 多模态能力:支持文本和图像输入,输出文本内容。
  • 可配置的推理模式:可以根据需求在快速即时回复模式和推理模式之间切换,在需要时通过测试时计算提升性能。

vLLM是一个高性能的LLM服务库,具有以下特点:

  • 高吞吐量:采用PagedAttention技术,有效提高内存利用率和吞吐量。
  • 低延迟:优化的推理引擎,减少响应时间。
  • 易于部署:提供简单易用的API和部署工具。

将Mistral Medium 3.5 128B与vLLM集成,可以充分发挥两者的优势,构建高性能、低延迟的AI服务。

准备工作:安装vLLM和相关依赖

在开始集成之前,需要安装vLLM和相关依赖。以下是详细的安装步骤:

安装vLLM

确保安装vLLM的 nightly 版本:

uv pip install -U vllm \ --torch-backend=auto \ --extra-index-url https://wheels.vllm.ai/nightly

验证安装

安装完成后,验证相关库的版本:

python -c "import mistral_common; print(mistral_common.__version__)" python -c "import transformers; print(transformers.__version__)"

确保mistral_common >= 1.11.1和transformers >= 5.4.0。

获取模型

通过以下命令克隆Mistral Medium 3.5 128B模型仓库:

git clone https://gitcode.com/hf_mirrors/mistralai/Mistral-Medium-3.5-128B

部署vLLM服务:启动Mistral Medium 3.5 128B

使用vLLM部署Mistral Medium 3.5 128B模型,推荐使用服务器/客户端设置。以下是启动服务器的命令:

vllm serve mistralai/Mistral-Medium-3.5-128B --tensor-parallel-size 8 \ --tool-call-parser mistral --enable-auto-tool-choice --reasoning-parser mistral --max_num_batched_tokens 16384 --max_num_seqs 128 \ --gpu_memory_utilization 0.8

其中,--tensor-parallel-size 8指定了使用8个GPU进行张量并行,根据实际GPU数量进行调整。--gpu_memory_utilization 0.8设置GPU内存利用率为80%,可以根据实际情况调整。

与vLLM交互:使用API调用模型

部署完成后,可以通过API与vLLM服务进行交互。以下是使用Python调用vLLM服务的示例代码:

指令遵循示例

from datetime import datetime, timedelta from huggingface_hub import hf_hub_download from openai import OpenAI # Modify OpenAI's API key and API base to use vLLM's API server. openai_api_key = "EMPTY" openai_api_base = "http://localhost:8000/v1" REASONING_EFFORT = "none" # Toggle reasoning with 'high'. match REASONING_EFFORT: case "none": TEMP = 0.1 TOP_P = None case "high": TEMP = 0.7 TOP_P = 0.95 case _: raise ValueError("Only REASONING_EFFORT in ['none', 'high'] are supported.") client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) models = client.models.list() model = models.data[0].id def load_system_prompt(repo_id: str, filename: str) -> str: file_path = hf_hub_download(repo_id=repo_id, filename=filename) with open(file_path, "r") as file: system_prompt = file.read() today = datetime.today().strftime("%Y-%m-%d") yesterday = (datetime.today() - timedelta(days=1)).strftime("%Y-%m-%d") model_name = repo_id.split("/")[-1] return system_prompt.format(name=model_name, today=today, yesterday=yesterday) SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt") messages = [ {"role": "system", "content": SYSTEM_PROMPT}, { "role": "user", "content": "Write me a sentence where every word starts with the next letter in the alphabet - start with 'a' and end with 'z'.", }, ] response = client.chat.completions.create( model=model, messages=messages, reasoning_effort=REASONING_EFFORT, temperature=TEMP, top_p=TOP_P, ) print("==============================================================") print(f"Request with {REASONING_EFFORT=}, {TEMP=} and {TOP_P=}.") print("==============================================================") print("REASONING") print("~~~~~~~~~") print(response.choices[0].message.reasoning) print("==============================================================") print("CONTENT") print("~~~~~~~") print(response.choices[0].message.content)

工具调用示例

Mistral Medium 3.5 128B支持工具调用,可以通过API实现与外部工具的集成。以下是一个使用计算器工具的示例:

import json from datetime import datetime, timedelta from openai import OpenAI from huggingface_hub import hf_hub_download # Modify OpenAI's API key and API base to use vLLM's API server. openai_api_key = "EMPTY" openai_api_base = "http://localhost:8000/v1" REASONING_EFFORT = "high" # Toggle reasoning with 'high'. match REASONING_EFFORT: case "none": TEMP = 0.1 TOP_P = None case "high": TEMP = 0.7 TOP_P = 0.95 case _: raise ValueError("Only REASONING_EFFORT in ['none', 'high'] are supported.") client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) models = client.models.list() model = models.data[0].id def load_system_prompt(repo_id: str, filename: str) -> str: file_path = hf_hub_download(repo_id=repo_id, filename=filename) with open(file_path, "r") as file: system_prompt = file.read() today = datetime.today().strftime("%Y-%m-%d") yesterday = (datetime.today() - timedelta(days=1)).strftime("%Y-%m-%d") model_name = repo_id.split("/")[-1] return system_prompt.format(name=model_name, today=today, yesterday=yesterday) SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt") def my_calculator(expression: str) -> str: return str(eval(expression)) tools = [ { "type": "function", "function": { "name": "my_calculator", "description": "A calculator that can evaluate a mathematical expression.", "parameters": { "type": "object", "properties": { "expression": { "type": "string", "description": "The mathematical expression to evaluate.", }, }, "required": ["expression"], }, }, }, ] messages = [ {"role": "system", "content": SYSTEM_PROMPT}, { "role": "user", "content": "What is 2 + 2 * 2?", }, ] response = client.chat.completions.create( model=model, messages=messages, tools=tools, tool_choice="auto", reasoning_effort=REASONING_EFFORT, temperature=TEMP, top_p=TOP_P, ) tool_calls = response.choices[0].message.tool_calls results = [] for tool_call in tool_calls: function_name = tool_call.function.name function_args = tool_call.function.arguments if function_name == "my_calculator": result = my_calculator(**json.loads(function_args)) results.append(result) messages.append({"role": "assistant", "tool_calls": tool_calls}) for tool_call, result in zip(tool_calls, results): messages.append( { "role": "tool", "tool_call_id": tool_call.id, "name": tool_call.function.name, "content": result, } ) response = client.chat.completions.create( model=model, messages=messages, reasoning_effort=REASONING_EFFORT, temperature=TEMP, top_p=TOP_P, ) print("==============================================================") print(f"Request with {REASONING_EFFORT=}, {TEMP=} and {TOP_P=}.") print("==============================================================") print("REASONING") print("~~~~~~~~~") print(response.choices[0].message.reasoning) print("==============================================================") print("CONTENT") print("~~~~~~~") print(response.choices[0].message.content)

性能优化:提升Mistral Medium 3.5 128B与vLLM集成的效率

为了提升集成后的性能,可以从以下几个方面进行优化:

调整推理参数

根据任务需求调整推理参数,如reasoning_effort、temperature和top_p等。对于复杂任务,使用reasoning_effort="high",可以提升推理性能;对于简单任务,使用reasoning_effort="none",可以提高响应速度。

优化GPU资源利用

通过调整--tensor-parallel-size和--gpu_memory_utilization等参数,优化GPU资源的利用。根据实际GPU数量和内存大小,合理设置并行度和内存利用率,避免资源浪费。

使用EAGLE模型

为了加速本地推理,可以使用Mistral发布的EAGLE模型。EAGLE模型针对vLLM和SGLang进行了优化,可以显著提升推理速度。更多信息请参考EAGLE模型。

常见问题解决:集成过程中可能遇到的问题及解决方案

长上下文性能下降

如果遇到长上下文性能下降的问题,可能是由于Transformers配置不正确导致的。请确保使用最新的配置,修复已在commit中引入。

依赖版本问题

确保mistral_common >= 1.11.1和transformers >= 5.4.0。如果版本过低,可能会导致功能异常或性能问题。可以通过以下命令升级依赖:

uv pip install -U mistral_common transformers

模型加载失败

如果模型加载失败,可能是由于模型文件不完整或损坏。请检查模型文件是否完整,或重新克隆模型仓库。

总结:构建高性能AI服务的最佳实践

通过本文的介绍,我们了解了如何将Mistral Medium 3.5 128B与vLLM集成,构建高性能的AI服务。以下是最佳实践总结:

  1. 选择合适的工具:使用vLLM作为推理引擎,充分发挥其高吞吐量和低延迟的优势。
  2. 优化推理参数:根据任务需求调整推理参数,平衡性能和速度。
  3. 合理利用GPU资源:根据实际GPU配置,优化并行度和内存利用率。
  4. 使用优化模型:对于本地部署,优先使用EAGLE模型,提升推理速度。
  5. 及时更新配置和依赖:确保使用最新的模型配置和依赖版本,避免已知问题。

通过遵循这些最佳实践,可以构建稳定、高效的AI服务,满足各种应用场景的需求。

参考资料

  • Mistral Medium 3.5 128B模型仓库
  • vLLM官方文档
  • EAGLE模型
  • Mistral Medium 3.5 128B博客

【免费下载链接】Mistral-Medium-3.5-128B项目地址: https://ai.gitcode.com/hf_mirrors/mistralai/Mistral-Medium-3.5-128B

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询