<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>推理与部署 on 扎塔-Zata</title><link>https://www.zata.cc/tags/%E6%8E%A8%E7%90%86%E4%B8%8E%E9%83%A8%E7%BD%B2/</link><description>Recent content in 推理与部署 on 扎塔-Zata</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>Example Person</copyright><lastBuildDate>Thu, 24 Sep 2026 17:09:06 +0800</lastBuildDate><atom:link href="https://www.zata.cc/tags/%E6%8E%A8%E7%90%86%E4%B8%8E%E9%83%A8%E7%BD%B2/index.xml" rel="self" type="application/rss+xml"/><item><title>vllm</title><link>https://www.zata.cc/p/vllm/</link><pubDate>Thu, 30 Oct 2025 01:27:14 +0800</pubDate><guid>https://www.zata.cc/p/vllm/</guid><description>&lt;img src="https://www.zata.cc/p/vllm/images/index/index.png" alt="Featured image of post vllm" />&lt;p>vLLM 是一个非常流行的高性能大语言模型（LLM）推理和服务库。它之所以速度快，关键在于它采用了 &lt;strong>PagedAttention&lt;/strong> 和&lt;strong>持续批处理 (Continuous Batching)&lt;/strong> 等先进技术，极大提高了 GPU 内存的利用率和吞吐量。&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/vllm/images/index/image.png"
width="1273"
height="668"
srcset="https://www.zata.cc/p/vllm/images/index/image_hu4283753399675956928.png 480w, https://www.zata.cc/p/vllm/images/index/image_hu17700599720032756952.png 1024w"
loading="lazy"
alt="page attention"
class="gallery-image"
data-flex-grow="190"
data-flex-basis="457px"
>&lt;/p>
&lt;p>这是一个详细的 vLLM 使用教程，分为几个关键步骤。&lt;/p>
&lt;h3 id="1-什么是-vllm">1. 什么是 vLLM？
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>高性能&lt;/strong>：vLLM 的吞吐量远高于传统的 Hugging Face Transformers 实现（快几十倍）。&lt;/li>
&lt;li>&lt;strong>高效内存管理&lt;/strong>：通过 PagedAttention，vLLM 像操作系统管理虚拟内存一样管理注意力机制中的 Key 和 Value（KV 缓存），减少了内存浪费和碎片。&lt;/li>
&lt;li>&lt;strong>OpenAI 兼容&lt;/strong>：它提供了一个与 OpenAI API 完全兼容的服务器，让您可以无缝替换原有的 API 调用。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="2--安装">2. 🔧 安装
&lt;/h3>&lt;p>vLLM 的安装非常简单，但它有一个关键的&lt;strong>前提条件&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>您必须有一块支持 CUDA 的 NVIDIA GPU&lt;/strong>。&lt;/li>
&lt;li>需要安装 Python 3.8 或更高版本。&lt;/li>
&lt;/ul>
&lt;p>您可以使用 &lt;code>pip&lt;/code> 直接安装：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install vllm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h3 id="3--核心用法一使用-python-api-离线推理">3. 🚀 核心用法一：使用 Python API (离线推理)
&lt;/h3>&lt;p>这是最直接的使用方式，适合在 Python 脚本中进行批量推理。&lt;/p>
&lt;p>您只需要导入 &lt;code>LLM&lt;/code> 和 &lt;code>SamplingParams&lt;/code> 这两个核心类。&lt;/p>
&lt;ul>
&lt;li>&lt;code>LLM&lt;/code>：用于加载模型。&lt;/li>
&lt;li>&lt;code>SamplingParams&lt;/code>：用于指定生成文本时的参数（如温度、top_p 等）。&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>示例代码：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">vllm&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">LLM&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">SamplingParams&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 准备提示词列表&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">prompts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Hello, my name is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The president of the United States is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The capital of France is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The future of AI is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 准备采样参数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 您可以为所有提示词设置一组参数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sampling_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SamplingParams&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temperature&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.8&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">top_p&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.95&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_tokens&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 初始化 LLM 类，指定要加载的模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># vLLM 会自动从 Hugging Face Hub 下载模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 第一次加载模型可能需要一些时间&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;正在加载模型...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">llm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LLM&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;模型加载完毕。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 运行批量推理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;正在生成文本...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">generate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompts&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sampling_params&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;生成完毕。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 打印输出结果&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">output&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">outputs&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">prompt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">prompt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">generated_text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">outputs&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;--- 提示词 (Prompt) ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompt&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;--- 生成结果 (Generated) ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">generated_text&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h3 id="4--核心用法二部署-openai-兼容-api-服务器">4. 🚀 核心用法二：部署 OpenAI 兼容 API 服务器
&lt;/h3>&lt;p>这是 vLLM 最强大的功能之一：将任何开源大模型部署为一个高速的、与 OpenAI API 格式一致的 API 服务。&lt;/p>
&lt;h4 id="第-1-步启动服务器">第 1 步：启动服务器
&lt;/h4>&lt;p>您只需要一行命令即可启动服务器。vLLM 推荐使用 &lt;code>vllm serve&lt;/code> 命令。&lt;/p>
&lt;p>（请注意：&lt;code>meta-llama/Llama-2-7b-chat-hf&lt;/code> 是一个需要授权的门控模型，您需要先登录 &lt;code>huggingface-cli login&lt;/code> 才能下载。您也可以换成其他开放模型，如 &lt;code>Qwen/Qwen2-1.5B-Instruct&lt;/code>）。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 启动服务器，加载 Llama-2-7b-chat 模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 服务器默认运行在 http://localhost:8000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vllm serve meta-llama/Llama-2-7b-chat-hf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>服务器启动后，您会看到类似以下的日志：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INFO 10-29 10:00:00 server.py:98] Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INFO 10-29 10:00:00 utils.py:322] Using Eager mode.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">INFO 10-29 10:00:00 utils.py:537] Effectively using 1 GPUs.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="第-2-步查询服务器-使用-python">第 2 步：查询服务器 (使用 Python)
&lt;/h4>&lt;p>现在，您可以使用任何 HTTP 客户端来调用它。最简单的方法是使用 &lt;code>openai&lt;/code> 官方 Python 库。&lt;/p>
&lt;p>首先，请确保您已安装 &lt;code>openai&lt;/code> 库：
&lt;code>pip install openai&lt;/code>&lt;/p>
&lt;p>然后，运行以下 Python 脚本：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">openai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">OpenAI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. 初始化 OpenAI 客户端&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 指向您本地 vLLM 服务器的地址&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">OpenAI&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">base_url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://localhost:8000/v1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;vllm&amp;#34;&lt;/span> &lt;span class="c1"># API 密钥不是必需的，但 OpenAI 库要求填写&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. 调用聊天接口 (Chat Completions)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;正在调用 vLLM 服务器...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">chat_response&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">chat&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">completions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="c1"># 确保这里的模型名与服务器加载的_一致&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;system&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;You are a helpful assistant.&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;What is the capital of France?&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_tokens&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temperature&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;--- 服务器响应 ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">chat_response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">content&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. (可选) 调用文本补全接口 (Completions)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># print(&amp;#34;\n--- 调用文本补全接口 ---&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># completion_response = client.completions.create(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># model=&amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># prompt=&amp;#34;The capital of France is&amp;#34;,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># max_tokens=50,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># temperature=0.7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># )&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># print(completion_response.choices[0].text)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h3 id="5--关键概念samplingparams">5. 📚 关键概念：&lt;code>SamplingParams&lt;/code>
&lt;/h3>&lt;p>在用法一中，&lt;code>SamplingParams&lt;/code> 对象是控制文本生成的关键。以下是一些常用参数：&lt;/p>
&lt;ul>
&lt;li>&lt;code>temperature&lt;/code> (浮点数): 控制随机性。0 表示确定性输出，更高的值（如 0.8）表示更多样化的输出。&lt;/li>
&lt;li>&lt;code>top_p&lt;/code> (浮点数): 核采样 (Nucleus sampling)。仅从累积概率超过 &lt;code>top_p&lt;/code> 的最小标记集中进行采样。&lt;/li>
&lt;li>&lt;code>max_tokens&lt;/code> (整数): 生成的最大 token 数量。&lt;/li>
&lt;li>&lt;code>n&lt;/code> (整数): 为每个提示词生成多少个独立的输出。&lt;/li>
&lt;li>&lt;code>stream&lt;/code> (布尔值): 是否以流式（逐个 token）返回结果。&lt;/li>
&lt;li>&lt;code>stop&lt;/code> (字符串列表): 遇到列表中的任何字符串时停止生成。&lt;/li>
&lt;/ul>
&lt;h3 id="6--官方资源">6. 🔗 官方资源
&lt;/h3>&lt;p>vLLM 发展非常快，最准确的信息始终来自官方：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>官方文档&lt;/strong>: &lt;a class="link" href="https://docs.vllm.ai/" target="_blank" rel="noopener"
>https://docs.vllm.ai/&lt;/a>&lt;/li>
&lt;li>&lt;strong>GitHub 仓库&lt;/strong>: &lt;a class="link" href="https://github.com/vllm-project/vllm" target="_blank" rel="noopener"
>https://github.com/vllm-project/vllm&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr></description></item><item><title>openbayes算力平台使用教程</title><link>https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 13 May 2025 14:39:02 +0800</pubDate><guid>https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;img src="https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/index.png" alt="Featured image of post openbayes算力平台使用教程" />&lt;h2 id="基础知识">基础知识
&lt;/h2>&lt;p>&lt;img src="https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1.png"
width="987"
height="2356"
srcset="https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu2487425574574766217.png 480w, https://www.zata.cc/p/openbayes%E7%AE%97%E5%8A%9B%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu843624174079903318.png 1024w"
loading="lazy"
alt="总结"
class="gallery-image"
data-flex-grow="41"
data-flex-basis="100px"
>&lt;/p></description></item><item><title>vllm使用教程</title><link>https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</link><pubDate>Tue, 13 May 2025 14:14:39 +0800</pubDate><guid>https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/</guid><description>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/index.png" alt="Featured image of post vllm使用教程" />&lt;p>参考
&lt;a class="link" href="https://zhuanlan.zhihu.com/p/678869505" target="_blank" rel="noopener"
>知乎&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="常用命令">常用命令
&lt;/h2>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 通过魔搭社区构建&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VLLM_USE_MODELSCOPE&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb">true&lt;/span> vllm serve &lt;span class="o">[&lt;/span>魔搭建社区的模型名，如：Qwen/Qwen3-0.6B-FP8&lt;span class="o">]&lt;/span> --enable-reasoning --reasoning-parser deepseek_r1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 通过本地模型文件构建&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m vllm.entrypoints.openai.api_server --model ~/Qwen3-0.6B --served-model-name Qwen3-0.6B --max-model-len&lt;span class="o">=&lt;/span>&lt;span class="m">2048&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="基本使用">基本使用
&lt;/h2>&lt;h3 id="什么是-vllm">什么是 vLLM？
&lt;/h3>&lt;p>vLLM 是一个为大型语言模型（LLM）推理和服务而设计的高性能开源库。它通过引入创新的技术，如 PagedAttention 和连续批处理（Continuous Batching），显著提高了吞吐量并有效管理内存，使得在生产环境中部署 LLM 更加高效。&lt;/p>
&lt;p>&lt;strong>核心优势:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>高吞吐量:&lt;/strong> 通过 PagedAttention 和连续批处理等技术，vLLM 能够处理更多的请求。&lt;/li>
&lt;li>&lt;strong>内存效率:&lt;/strong> PagedAttention 有效地管理注意力机制中的键（key）和值（value）缓存，减少内存浪费和碎片。&lt;/li>
&lt;li>&lt;strong>易用性:&lt;/strong> 与 Hugging Face Transformers 模型无缝集成，并提供 OpenAI 兼容的 API 服务器。&lt;/li>
&lt;li>&lt;strong>灵活性:&lt;/strong> 支持多种解码算法（如并行采样、束搜索等）、张量并行和流水线并行以进行分布式推理。&lt;/li>
&lt;li>&lt;strong>广泛的模型支持:&lt;/strong> 支持许多流行的开源 LLM。&lt;/li>
&lt;/ul>
&lt;h3 id="1-安装-vllm">1. 安装 vLLM
&lt;/h3>&lt;p>vLLM 需要 Linux 环境、Python 3.8 或更高版本，以及具有 CUDA 计算能力 7.0 或更高版本的 NVIDIA GPU（例如 V100, T4, RTX20xx, A100, L4, H100 等）。vLLM 通常使用特定版本的 CUDA 进行编译（例如 CUDA 12.1）。&lt;/p>
&lt;p>&lt;strong>推荐使用 Conda 创建新环境:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">conda create -n vllm-env &lt;span class="nv">python&lt;/span>&lt;span class="o">=&lt;/span>3.9 -y
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda activate vllm-env
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>通过 pip 安装 (通常需要与你的 CUDA 版本匹配):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 安装与 CUDA 12.1 兼容的 vLLM&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install vllm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果你本地的 CUDA 版本不同，或者想使用特定的 PyTorch 版本，可能需要从源码编译或者安装特定 CUDA 版本的预编译包。请参考 vLLM 官方文档获取最新的安装指南和针对不同 CUDA 版本的安装命令。&lt;/p>
&lt;p>&lt;strong>查看官方文档获取最新和更详细的安装说明:&lt;/strong> &lt;a class="link" href="https://docs.vllm.ai/en/latest/getting_started/installation.html" target="_blank" rel="noopener"
>https://docs.vllm.ai/en/latest/getting_started/installation.html&lt;/a>&lt;/p>
&lt;h3 id="2-基本离线推理-python-api">2. 基本离线推理 (Python API)
&lt;/h3>&lt;p>你可以直接在 Python 脚本中使用 vLLM 进行离线推理。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">vllm&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">LLM&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">SamplingParams&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 准备你的提示语列表&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">prompts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Hello, my name is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The president of the United States is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The capital of France is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;The future of AI is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 初始化采样参数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># temperature: 控制生成文本的随机性，值越高越随机。&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># top_p: 核采样，选择概率总和达到 top_p 的最小词汇集。&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># max_tokens: 控制生成的最大 token 数量。&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">sampling_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SamplingParams&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">temperature&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.8&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">top_p&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.95&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">max_tokens&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 从 Hugging Face Hub 加载模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 你可以选择不同的模型，例如 &amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;, &amp;#34;mistralai/Mistral-7B-v0.1&amp;#34; 等&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 确保你已经登录 Hugging Face CLI 并且接受了模型的 license (如果需要)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># export HF_TOKEN=YOUR_HUGGINGFACE_TOKEN (如果模型需要授权)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">llm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LLM&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;facebook/opt-125m&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 这是一个小模型，方便快速测试&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 执行推理&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">generate&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompts&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sampling_params&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 打印输出结果&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">output&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">outputs&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">prompt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">prompt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">generated_text&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">output&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">outputs&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Prompt: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">prompt&lt;/span>&lt;span class="si">!r}&lt;/span>&lt;span class="s2">, Generated: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">generated_text&lt;/span>&lt;span class="si">!r}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="3-启动-openai-兼容的-api-服务器">3. 启动 OpenAI 兼容的 API 服务器
&lt;/h3>&lt;p>vLLM 可以启动一个与 OpenAI API 兼容的服务器，允许你通过 HTTP 请求与模型交互，这对于将 LLM 集成到现有应用中非常方便。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 启动 API 服务器，将 MODEL_NAME 替换为你想要服务的 Hugging Face 模型名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 例如: facebook/opt-125m, meta-llama/Llama-2-7b-chat-hf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># --model: 指定要加载的模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># --tensor-parallel-size: (可选) 如果你有多个 GPU，可以使用张量并行来加速，例如 --tensor-parallel-size 2 表示使用 2 个 GPU&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m vllm.entrypoints.openai.api_server --model&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;facebook/opt-125m&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 服务器默认运行在 http://localhost:8000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 你可以通过 --host 和 --port 参数修改&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 例如: python -m vllm.entrypoints.openai.api_server --model=&amp;#34;facebook/opt-125m&amp;#34; --host 0.0.0.0 --port 8080&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>一旦服务器运行起来，你就可以像使用 OpenAI API 一样向它发送请求。&lt;/p>
&lt;p>&lt;strong>使用 &lt;code>curl&lt;/code> 测试 API 服务器 ( Completions API - 适用于非聊天模型 ):&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl http://localhost:8000/v1/completions &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;model&amp;#34;: &amp;#34;facebook/opt-125m&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;prompt&amp;#34;: &amp;#34;San Francisco is a&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;max_tokens&amp;#34;: 7,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;temperature&amp;#34;: 0
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>使用 &lt;code>curl&lt;/code> 测试 API 服务器 ( Chat Completions API - 适用于聊天模型 ):&lt;/strong>&lt;/p>
&lt;p>对于像 Llama-2-chat 这样的聊天模型，你应该使用 &lt;code>/v1/chat/completions&lt;/code> 端点。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 假设你已经使用聊天模型启动了服务器，例如:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># python -m vllm.entrypoints.openai.api_server --model=&amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl http://localhost:8000/v1/chat/completions &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;model&amp;#34;: &amp;#34;meta-llama/Llama-2-7b-chat-hf&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;messages&amp;#34;: [
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> {&amp;#34;role&amp;#34;: &amp;#34;system&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;You are a helpful assistant.&amp;#34;},
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> {&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Who won the world series in 2020?&amp;#34;}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> ],
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;max_tokens&amp;#34;: 50,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;temperature&amp;#34;: 0.7
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>使用 Python &lt;code>openai&lt;/code> 库与 vLLM 服务器交互:&lt;/strong>&lt;/p>
&lt;p>首先，安装 &lt;code>openai&lt;/code> 库: &lt;code>pip install openai&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">openai&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 修改 openai.api_base 指向你的 vLLM 服务器&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">api_base&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;http://localhost:8000/v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">api_key&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;YOUR_API_KEY&amp;#34;&lt;/span> &lt;span class="c1"># 对于本地 vLLM 服务器，API 密钥通常是可选的或任意字符串，如 &amp;#34;EMPTY&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 列出可用的模型 (会返回你通过 --model 参数指定的模型)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">models&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">list&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Available models:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">models&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="n">models&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model_name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">models&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">id&lt;/span> &lt;span class="c1"># 获取第一个可用的模型名称&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Using model: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">model_name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Chat Completions 示例&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">chat_completion&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ChatCompletion&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model_name&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;system&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;You are a helpful assistant.&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;What is the capital of France?&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temperature&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mf">0.7&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_tokens&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">50&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Chat Completion:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chat_completion&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;content&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Error in Chat Completion: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Legacy Completions 示例 (如果模型支持)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">completion&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Completion&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model_name&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">prompt&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;The capital of France is&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">max_tokens&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temperature&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Completion:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">completion&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">choices&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Error in Completion: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;No models available from the server.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="4-常用参数说明">4. 常用参数说明
&lt;/h3>&lt;p>无论是在 Python API 还是 OpenAI 兼容服务器中，一些核心参数是共通的：&lt;/p>
&lt;ul>
&lt;li>&lt;code>model&lt;/code> (字符串): 指定要加载的 Hugging Face 模型仓库的名称 (例如, &lt;code>&amp;quot;facebook/opt-125m&amp;quot;&lt;/code>, &lt;code>&amp;quot;meta-llama/Llama-2-7b-chat-hf&amp;quot;&lt;/code>)。&lt;/li>
&lt;li>&lt;code>temperature&lt;/code> (浮点数, 通常在 0.0 到 2.0 之间): 控制输出的随机性。较低的温度使输出更具确定性和重复性，较高的温度则更具创造性和多样性。建议值：0.7-1.0 适用于创造性任务，0.0-0.2 适用于需要精确和事实性回答的任务。&lt;/li>
&lt;li>&lt;code>top_p&lt;/code> (浮点数, 通常在 0.0 到 1.0 之间): 核采样参数。模型会从概率总和达到 &lt;code>top_p&lt;/code> 的最小词汇集合中进行采样。例如，&lt;code>top_p=0.9&lt;/code> 表示只考虑概率加起来达到90%的最可能的词。通常不与 &lt;code>temperature&lt;/code> 同时设为非默认值。&lt;/li>
&lt;li>&lt;code>top_k&lt;/code> (整数): 从 logits 最高的 K 个 token 中进行采样。如果设置为非零值，则会覆盖 &lt;code>top_p&lt;/code>。&lt;/li>
&lt;li>&lt;code>max_tokens&lt;/code> (整数): 生成响应的最大 token 数量。注意这包括了输入提示和输出。&lt;/li>
&lt;li>&lt;code>n&lt;/code> (整数): 为每个输入提示生成多少个独立的候选项。&lt;/li>
&lt;li>&lt;code>presence_penalty&lt;/code> (浮点数): 对已经出现在文本中的 token 施加惩罚，降低重复性。&lt;/li>
&lt;li>&lt;code>frequency_penalty&lt;/code> (浮点数): 与 &lt;code>presence_penalty&lt;/code> 类似，但惩罚的程度与 token 在文本中出现的频率成正比。&lt;/li>
&lt;li>&lt;code>stop&lt;/code> (字符串或列表): 一个或多个停止序列。当模型生成这些序列时，会停止进一步的生成。&lt;/li>
&lt;/ul>
&lt;p>查阅 vLLM 和 OpenAI 的文档可以获取更详细的参数列表和解释。&lt;/p>
&lt;h3 id="5-进阶特性-简介">5. 进阶特性 (简介)
&lt;/h3>&lt;p>vLLM 支持许多高级功能以优化性能和扩展能力：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>量化 (Quantization):&lt;/strong> 支持如 AWQ, GPTQ, SqueezeLLM 等量化方法，以更低的精度（如 INT8, INT4）运行模型，减少内存占用和加速推理，但可能会有轻微的精度损失。
&lt;ul>
&lt;li>示例 (GPTQ): &lt;code>llm = LLM(model=&amp;quot;TheBloke/Llama-2-7B-GPTQ&amp;quot;)&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>LoRA (Low-Rank Adaptation):&lt;/strong> 高效地微调或加载经过 LoRA 适配器调整的模型。vLLM 支持动态加载和卸载 LoRA 适配器。&lt;/li>
&lt;li>&lt;strong>分布式推理 (Distributed Inference):&lt;/strong>
&lt;ul>
&lt;li>&lt;strong>张量并行 (Tensor Parallelism):&lt;/strong> 将模型的权重和计算分布到多个 GPU 上，以运行单个大型模型。在启动服务器或 &lt;code>LLM&lt;/code> 类时使用 &lt;code>tensor_parallel_size&lt;/code> 参数。
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Python API&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">llm&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LLM&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;your_large_model&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tensor_parallel_size&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 使用 4 个 GPU&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># API 服务器&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m vllm.entrypoints.openai.api_server --model&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;your_large_model&amp;#34;&lt;/span> --tensor-parallel-size &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>&lt;strong>流水线并行 (Pipeline Parallelism):&lt;/strong> (vLLM 对此的支持可能仍在发展中，主要依赖于底层模型的实现方式，通常张量并行更为直接)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>前缀缓存 (Prefix Caching / Automatic Prefix Caching):&lt;/strong> 自动缓存和重用共享前缀的 KV 缓存，加速具有共同前缀的请求序列。&lt;/li>
&lt;li>&lt;strong>投机解码 (Speculative Decoding):&lt;/strong> 使用一个小的、快速的草稿模型来预测多个 token，然后由主模型进行验证，以加速解码过程。&lt;/li>
&lt;li>&lt;strong>多模态支持:&lt;/strong> vLLM 正在扩展对多模态模型（如 LLaVA）的支持。&lt;/li>
&lt;/ul>
&lt;p>这些高级特性的具体用法请参考 vLLM 的官方文档和示例。&lt;/p>
&lt;h3 id="6-常见用例">6. 常见用例
&lt;/h3>&lt;p>vLLM 因其高性能和高吞吐量，非常适合以下场景：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>实时聊天机器人和虚拟助手:&lt;/strong> 需要低延迟响应。&lt;/li>
&lt;li>&lt;strong>大规模文本生成服务:&lt;/strong> 如内容创作、代码生成、摘要等。&lt;/li>
&lt;li>&lt;strong>批处理推理任务:&lt;/strong> 对大量数据进行离线处理。&lt;/li>
&lt;li>&lt;strong>需要高效扩展 AI 驱动的工作流:&lt;/strong> 当用户量或数据量增长时，vLLM 可以帮助系统保持性能。&lt;/li>
&lt;li>&lt;strong>研究和实验:&lt;/strong> 快速迭代和测试不同的 LLM。&lt;/li>
&lt;/ul>
&lt;h3 id="7-更多资源">7. 更多资源
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>vLLM GitHub 仓库:&lt;/strong> &lt;a class="link" href="https://github.com/vllm-project/vllm" target="_blank" rel="noopener"
>https://github.com/vllm-project/vllm&lt;/a>&lt;/li>
&lt;li>&lt;strong>vLLM 官方文档:&lt;/strong> &lt;a class="link" href="https://docs.vllm.ai/" target="_blank" rel="noopener"
>https://docs.vllm.ai/&lt;/a>&lt;/li>
&lt;li>&lt;strong>vLLM 示例:&lt;/strong> &lt;a class="link" href="https://docs.vllm.ai/en/latest/getting_started/examples/examples_index.html" target="_blank" rel="noopener"
>https://docs.vllm.ai/en/latest/getting_started/examples/examples_index.html&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="实战">实战
&lt;/h2>&lt;h3 id="vllm部署-qwen3-使用4090--成功">vllm部署 Qwen3 ：使用4090 （成功）
&lt;/h3>&lt;p>&lt;a class="link" href="https://www.modelscope.cn/models/Qwen/Qwen3-32B" target="_blank" rel="noopener"
>https://www.modelscope.cn/models/Qwen/Qwen3-32B&lt;/a>&lt;/p>
&lt;p>我使用的是bayes平台，首先创建一个容器&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1.png"
width="950"
height="946"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu9213163096007425695.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu10194893962500638288.png 1024w"
loading="lazy"
alt="创建容器"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="241px"
>&lt;/p>
&lt;p>&lt;span style="color:red">我选的是自带vllm环境的容器,所以并没有涉及到安装环境&lt;/span>&lt;/p>
&lt;p>执行如下命令&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VLLM_USE_MODELSCOPE&lt;/span>&lt;span class="o">=&lt;/span>True vllm serve Qwen/Qwen3-0.6B --enable-reasoning --reasoning-parser deepseek_r1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-6.png"
width="629"
height="761"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-6_hu15180232649051267013.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-6_hu9129690426488544575.png 1024w"
loading="lazy"
alt="漫长的等待"
class="gallery-image"
data-flex-grow="82"
data-flex-basis="198px"
>&lt;/p>
&lt;p>首先查看有哪些模型&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">curl http://localhost:8000/v1/models
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-7.png"
width="626"
height="107"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-7_hu6591407701508629748.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-7_hu2576473419995334969.png 1024w"
loading="lazy"
alt="模型列表"
class="gallery-image"
data-flex-grow="585"
data-flex-basis="1404px"
>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 如果jq没安装 apt install jq&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl http://localhost:8000/v1/chat/completions &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s2">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;model&amp;#34;: &amp;#34;Qwen/Qwen3-0.6B&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;messages&amp;#34;: [
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> {&amp;#34;role&amp;#34;: &amp;#34;system&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;You are a helpful assistant.&amp;#34;},
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> {&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Who won the world series in 2020?&amp;#34;}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> ]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span> &lt;span class="p">|&lt;/span> jq .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-8.png"
width="635"
height="700"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-8_hu13829056785224482406.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-8_hu17188635501624616969.png 1024w"
loading="lazy"
alt="调用成功"
class="gallery-image"
data-flex-grow="90"
data-flex-basis="217px"
>&lt;/p>
&lt;p>也可以使用如下的py代码&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">from openai import OpenAI
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">client&lt;/span> &lt;span class="o">=&lt;/span> OpenAI&lt;span class="o">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">base_url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://localhost:8000/v1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;token-abc123&amp;#34;&lt;/span>, &lt;span class="c1"># 随便设，只是为了通过接口参数校验&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">completion&lt;/span> &lt;span class="o">=&lt;/span> client.chat.completions.create&lt;span class="o">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Qwen/Qwen3-0.6B&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">messages&lt;/span>&lt;span class="o">=[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;你是什么模型？&amp;#34;&lt;/span>&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">print&lt;span class="o">(&lt;/span>completion.choices&lt;span class="o">[&lt;/span>0&lt;span class="o">]&lt;/span>.message&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-9.png"
width="615"
height="212"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-9_hu5752232970520976895.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-9_hu7293061812827087037.png 1024w"
loading="lazy"
alt="调用成功"
class="gallery-image"
data-flex-grow="290"
data-flex-basis="696px"
>&lt;/p>
&lt;h3 id="vllm部署-qwen3-使用v100_32--失败">vllm部署 Qwen3 ：使用v100_32 （失败）
&lt;/h3>&lt;p>我使用的是bayes平台，首先创建一个容器&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1.png"
width="950"
height="946"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu9213163096007425695.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-1_hu10194893962500638288.png 1024w"
loading="lazy"
alt="创建容器"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="241px"
>&lt;/p>
&lt;ol>
&lt;li>然后是环境的准备&lt;/li>
&lt;/ol>
&lt;p>推荐使用uv安装，因为快啊
&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-2.png"
width="603"
height="400"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-2_hu996712424102918167.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-2_hu2146696407104333354.png 1024w"
loading="lazy"
alt="uv"
class="gallery-image"
data-flex-grow="150"
data-flex-basis="361px"
>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir qwen3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> qwen3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install uv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">uv venv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> ./venv/bin/activate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># uv pip install cudatoolkit=12.1 -y&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># uv pip install torch torchvision torchaudio # 也可以配置一下镜像源&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># python -c &amp;#39;import torch; print(torch.cuda.is_available())&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">uv pip install vllm ray transformers accelerate
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 创建conda环境&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda create -n qwen3 &lt;span class="nv">python&lt;/span>&lt;span class="o">=&lt;/span>3.10 -y &lt;span class="c1"># -y表示无需确认&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda activate qwen3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 安装CUDA相关依赖（确保与vLLM兼容的CUDA版本）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># vLLM通常编译于CUDA 12.1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">conda install &lt;span class="nv">cudatoolkit&lt;/span>&lt;span class="o">=&lt;/span>12.1 -y
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 安装PyTorch（确保与CUDA版本兼容）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install torch torchvision torchaudio
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 检查CUDA是否正确安装&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -c &lt;span class="s1">&amp;#39;import torch; print(torch.cuda.is_available())&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install vllm ray transformers accelerate
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>然后配置魔搭（许多服务器不支持翻墙，所以hugging face可能难用）&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">pip install modelscope
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>之后vllm应用就可以默认从modelscope上下载镜像了。&lt;/p>
&lt;p>&lt;a class="link" href="https://www.modelscope.cn/models/Qwen/Qwen3-32B" target="_blank" rel="noopener"
>https://www.modelscope.cn/models/Qwen/Qwen3-32B&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VLLM_USE_MODELSCOPE&lt;/span>&lt;span class="o">=&lt;/span>True vllm serve Qwen/Qwen3-0.6B --enable-reasoning --reasoning-parser deepseek_r1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-3.png"
width="1279"
height="38"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-3_hu8966833523789181029.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-3_hu3188778880475329620.png 1024w"
loading="lazy"
alt="出错"
class="gallery-image"
data-flex-grow="3365"
data-flex-basis="8077px"
>&lt;/p>
&lt;p>然后修改成以下命令&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">VLLM_USE_MODELSCOPE&lt;/span>&lt;span class="o">=&lt;/span>True vllm serve Qwen/Qwen3-0.6B --enable-reasoning --reasoning-parser deepseek_r1 --dtype&lt;span class="o">=&lt;/span>half
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-4.png"
width="1282"
height="1791"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-4_hu7500768358449677268.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-4_hu7606026059848615553.png 1024w"
loading="lazy"
alt="运行成功"
class="gallery-image"
data-flex-grow="71"
data-flex-basis="171px"
>&lt;/p>
&lt;p>此外，我们也可以用本地的镜像文件进行模型部署，方法如下（我这里选择用本地，比较灵活）。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">git lfs clone https://www.modelscope.cn/Qwen/Qwen3-0.6B.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m vllm.entrypoints.openai.api_server --model ~/Qwen3-0.6B --served-model-name Qwen3-0.6B --max-model-len&lt;span class="o">=&lt;/span>&lt;span class="m">2048&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>之后进行测试：可以使用python进行测试：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">from openai import OpenAI
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">client&lt;/span> &lt;span class="o">=&lt;/span> OpenAI&lt;span class="o">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">base_url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://localhost:8000/v1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;token-abc123&amp;#34;&lt;/span>, &lt;span class="c1"># 随便设，只是为了通过接口参数校验&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">completion&lt;/span> &lt;span class="o">=&lt;/span> client.chat.completions.create&lt;span class="o">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Qwen3-0.6B&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">messages&lt;/span>&lt;span class="o">=[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">{&lt;/span>&lt;span class="s2">&amp;#34;role&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>, &lt;span class="s2">&amp;#34;content&amp;#34;&lt;/span>: &lt;span class="s2">&amp;#34;你是什么模型？&amp;#34;&lt;/span>&lt;span class="o">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">print&lt;span class="o">(&lt;/span>completion.choices&lt;span class="o">[&lt;/span>0&lt;span class="o">]&lt;/span>.message&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-5.png"
width="1247"
height="338"
srcset="https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-5_hu12491840117383031656.png 480w, https://www.zata.cc/p/vllm%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/images/index/image-5_hu13063966157095334477.png 1024w"
loading="lazy"
alt="调用失败"
class="gallery-image"
data-flex-grow="368"
data-flex-basis="885px"
>&lt;/p></description></item><item><title>深度学习开源框架</title><link>https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/</link><pubDate>Thu, 06 Mar 2025 21:38:33 +0800</pubDate><guid>https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/</guid><description>&lt;img src="https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/images/index/index.png" alt="Featured image of post 深度学习开源框架" />&lt;h2 id="deepspeed">DeepSpeed
&lt;/h2>&lt;h4 id="什么是-deepspeed">什么是 DeepSpeed？
&lt;/h4>&lt;p>DeepSpeed 是一个开源深度学习优化库，专为分布式训练和大规模模型设计。它提供了多种工具和技术，如 ZeRO（零冗余优化器）、混合精度训练和高效的并行策略，帮助开发者在 GPU 上更快、更高效地训练模型。DeepSpeed 的主要目标是降低内存占用并提升训练速度，特别适用于超大型语言模型（LLM）。&lt;br>
deepspeed在深度学习模型软件体系架构中所处的位置是？&lt;/p>
&lt;p>&lt;img src="https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/images/index/index.png"
width="527"
height="563"
srcset="https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/images/index/index_hu16552712830397392418.png 480w, https://www.zata.cc/p/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/images/index/index_hu430730138650117574.png 1024w"
loading="lazy"
alt="alt text"
class="gallery-image"
data-flex-grow="93"
data-flex-basis="224px"
>&lt;/p>
&lt;h4 id="核心功能">核心功能
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>ZeRO（零冗余优化器）&lt;/strong>：通过分割优化器状态、分梯度和参数，减少内存冗余，支持更大的模型。&lt;/li>
&lt;li>&lt;strong>混合精度训练&lt;/strong>：结合 FP16 和 BF16，加速计算并减少内存需求。&lt;/li>
&lt;li>&lt;strong>分布式训练支持&lt;/strong>：支持数据并行、模型并行和流水线并行。&lt;/li>
&lt;li>&lt;strong>高效激活检查点&lt;/strong>：优化内存使用，允许更大的批量大小。&lt;/li>
&lt;li>&lt;strong>超大模型支持&lt;/strong>：能够训练超过千亿参数的模型。&lt;/li>
&lt;/ul>
&lt;h4 id="安装-deepspeed">安装 DeepSpeed
&lt;/h4>&lt;p>在开始使用 DeepSpeed 之前，需要安装它。以下是安装步骤：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>确保环境准备&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>Python 3.6 或更高版本&lt;/li>
&lt;li>PyTorch（建议最新稳定版）&lt;/li>
&lt;li>CUDA（与 PyTorch 兼容的版本）&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>通过 pip 安装 DeepSpeed&lt;/strong>：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install deepspeed
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>验证安装&lt;/strong>：
运行以下命令检查是否成功安装：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ds_report
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这将显示 DeepSpeed 的配置信息和环境兼容性。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h4 id="集成-deepspeed-到-pytorch">集成 DeepSpeed 到 PyTorch
&lt;/h4>&lt;p>以下是一个简单的例子，展示如何将 DeepSpeed 集成到 PyTorch 训练代码中。&lt;/p>
&lt;h5 id="示例代码">示例代码
&lt;/h5>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">torch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">torch.nn&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">nn&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">deepspeed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 定义一个简单的模型&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">SimpleModel&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nn&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Module&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="fm">__init__&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">super&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">SimpleModel&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="fm">__init__&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fc1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nn&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Linear&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fc2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nn&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Linear&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">def&lt;/span> &lt;span class="nf">forward&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">x&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">torch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">relu&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fc1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fc2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">x&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 初始化模型和数据&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SimpleModel&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">torch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randn&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># 批量大小 32，输入维度 10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">labels&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">torch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">randint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="p">,))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 定义 DeepSpeed 配置&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ds_config&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;train_batch_size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">32&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;gradient_accumulation_steps&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;fp16&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;enabled&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">True&lt;/span> &lt;span class="c1"># 启用混合精度训练&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;optimizer&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Adam&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;params&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;lr&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.001&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 初始化 DeepSpeed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model_engine&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">optimizer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">deepspeed&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">initialize&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model_parameters&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parameters&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">config&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">ds_config&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 前向传播和反向传播&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">outputs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">model_engine&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">loss&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">nn&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">CrossEntropyLoss&lt;/span>&lt;span class="p">()(&lt;/span>&lt;span class="n">outputs&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">labels&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model_engine&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">backward&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">loss&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">model_engine&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">step&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="代码说明">代码说明
&lt;/h5>&lt;ol>
&lt;li>&lt;strong>模型定义&lt;/strong>：这里使用了一个简单的两层全连接神经网络。&lt;/li>
&lt;li>&lt;strong>DeepSpeed 配置&lt;/strong>：&lt;code>ds_config&lt;/code> 是一个字典，指定训练参数，如批量大小、优化器类型和混合精度选项。&lt;/li>
&lt;li>&lt;strong>初始化 DeepSpeed&lt;/strong>：&lt;code>deepspeed.initialize&lt;/code> 将模型和优化器包装为 DeepSpeed 引擎。&lt;/li>
&lt;li>&lt;strong>训练步骤&lt;/strong>：使用 &lt;code>model_engine&lt;/code> 替代原始 PyTorch 模型进行前向传播、反向传播和参数更新。&lt;/li>
&lt;/ol>
&lt;h4 id="配置文件的替代方式">配置文件的替代方式
&lt;/h4>&lt;p>除了在代码中定义 &lt;code>ds_config&lt;/code>，你还可以创建一个 JSON 文件（例如 &lt;code>ds_config.json&lt;/code>）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;train_batch_size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">32&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;gradient_accumulation_steps&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;fp16&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;enabled&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;optimizer&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Adam&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;params&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;lr&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.001&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后在初始化时加载：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">model_engine&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">optimizer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">deepspeed&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">initialize&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model_parameters&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">parameters&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">config&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;ds_config.json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="运行分布式训练">运行分布式训练
&lt;/h4>&lt;p>要使用多个 GPU 运行训练，只需通过 &lt;code>deepspeed&lt;/code> 命令启动脚本：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">deepspeed train.py --deepspeed --deepspeed_config ds_config.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>确保你的脚本支持分布式环境（例如，使用 &lt;code>torch.distributed.launch&lt;/code> 或 DeepSpeed 的内置分布式支持）。&lt;/p>
&lt;h4 id="高级功能zero-优化">高级功能：ZeRO 优化
&lt;/h4>&lt;p>ZeRO 有三个阶段，可以通过配置启用：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>ZeRO-1&lt;/strong>：分割优化器状态。&lt;/li>
&lt;li>&lt;strong>ZeRO-2&lt;/strong>：分割优化器状态和梯度。&lt;/li>
&lt;li>&lt;strong>ZeRO-3&lt;/strong>：分割优化器状态、梯度和参数。&lt;/li>
&lt;/ul>
&lt;p>示例配置：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;zero_optimization&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;stage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;allgather_partitions&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;reduce_scatter&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="注意事项">注意事项
&lt;/h4>&lt;ul>
&lt;li>&lt;strong>硬件要求&lt;/strong>：DeepSpeed 需要 GPU 支持，建议使用 NVIDIA GPU。&lt;/li>
&lt;li>&lt;strong>调试&lt;/strong>：如果遇到问题，可以检查 &lt;code>ds_report&lt;/code> 输出或启用详细日志（&lt;code>&amp;quot;verbose&amp;quot;: true&lt;/code>）。&lt;/li>
&lt;li>&lt;strong>文档参考&lt;/strong>：查看 &lt;a class="link" href="https://www.deepspeed.ai/" target="_blank" rel="noopener"
>DeepSpeed 官方文档&lt;/a> 获取更多高级用法。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="transformers">transformers
&lt;/h2>&lt;p>&lt;code>transformers&lt;/code> 库（通常指 Hugging Face 公司开发的库）是目前深度学习，尤其是自然语言处理（NLP）领域中&lt;strong>最重要、最核心的库之一&lt;/strong>。&lt;/p>
&lt;p>它本身是一个 Python 库，但由于其生态系统极其完整和强大，很多人也视它为一个“框架”。它极大地简化了访问和使用最先进（SOTA）的 Transformer 模型（如 BERT, GPT, T5 等）的复杂度。&lt;/p>
&lt;p>以下是 Hugging Face &lt;code>transformers&lt;/code> 库的主要特点：&lt;/p>
&lt;hr>
&lt;h3 id="-hugging-face-transformers-的核心特点">🤖 Hugging Face &lt;code>transformers&lt;/code> 的核心特点
&lt;/h3>&lt;h4 id="1-庞大且活跃的模型中心-model-hub">1. 庞大且活跃的模型中心 (Model Hub)
&lt;/h4>&lt;p>这是 &lt;code>transformers&lt;/code> 最核心的优势。Hugging Face 运营着一个巨大的模型仓库（Model Hub），任何人都可以上传、下载和分享预训练模型。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>海量模型：&lt;/strong> 截至目前，上面有数十万个预训练模型，涵盖了文本、图像、音频等多种模态。&lt;/li>
&lt;li>&lt;strong>社区驱动：&lt;/strong> 不仅有 Google、Meta、OpenAI 等大公司发布的官方模型，还有大量由社区贡献的、针对特定任务或特定语言微调（Fine-tune）过的模型。&lt;/li>
&lt;li>&lt;strong>版本控制与复现：&lt;/strong> 所有模型都与代码和分词器（Tokenizer）绑定，可以轻松复现他人的工作。&lt;/li>
&lt;/ul>
&lt;h4 id="2-极佳的易用性-ease-of-use">2. 极佳的易用性 (Ease of Use)
&lt;/h4>&lt;p>Hugging Face 的 API 设计哲学是“简单”和“一致”。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>pipeline()&lt;/code> 抽象：&lt;/strong> 这是最简单的入门方式。您只需几行代码，就可以完成一个复杂的NLP任务（如情感分析、问答），而无需关心背后的模型和数据处理流程。&lt;/li>
&lt;li>&lt;strong>&lt;code>AutoModel&lt;/code> / &lt;code>AutoTokenizer&lt;/code>：&lt;/strong> 您不需要知道某个具体模型（比如 &amp;lsquo;bert-base-uncased&amp;rsquo;）是 &lt;code>BertModel&lt;/code> 还是 &lt;code>RobertaModel&lt;/code>。您只需使用 &lt;code>AutoModel.from_pretrained(...)&lt;/code>，它会自动识别并加载正确的模型架构。&lt;/li>
&lt;li>&lt;strong>一致的 API：&lt;/strong> 无论您使用的是 BERT 还是 GPT-2，加载模型 (&lt;code>from_pretrained&lt;/code>) 和保存模型 (&lt;code>save_pretrained&lt;/code>) 的方法都是完全一样的。&lt;/li>
&lt;/ul>
&lt;h4 id="3-框架互操作性-framework-interoperability">3. 框架互操作性 (Framework Interoperability)
&lt;/h4>&lt;p>&lt;code>transformers&lt;/code> 库并不是要取代已有的深度学习框架，而是构建在它们之上。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>无缝切换：&lt;/strong> 它完美支持 &lt;strong>PyTorch&lt;/strong>, &lt;strong>TensorFlow&lt;/strong> 和 &lt;strong>JAX&lt;/strong>。&lt;/li>
&lt;li>&lt;strong>灵活性：&lt;/strong> 您可以使用 PyTorch 版本的 &lt;code>transformers&lt;/code> 训练一个模型，然后将其保存，再用 TensorFlow 版本的 &lt;code>transformers&lt;/code> 加载它，模型权重会自动转换。这为不同技术栈的团队协作提供了巨大便利。&lt;/li>
&lt;/ul>
&lt;h4 id="4-任务导向的抽象-task-oriented-abstraction">4. 任务导向的抽象 (Task-Oriented Abstraction)
&lt;/h4>&lt;p>&lt;code>transformers&lt;/code> 库围绕“任务”提供了清晰的模型分类。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>明确的命名：&lt;/strong> 当您想做一个分类任务时，您会寻找 &lt;code>...ForSequenceClassification&lt;/code> 结尾的模型（如 &lt;code>BertForSequenceClassification&lt;/code>）。&lt;/li>
&lt;li>&lt;strong>开箱即用：&lt;/strong> 这些模型已经在基础模型（如 BERT）的顶部添加了适合特定任务的“头部”（Head），例如一个用于分类的全连接层。您加载后只需直接进行微调。&lt;/li>
&lt;/ul>
&lt;h4 id="5-强大且一致的分词-tokenization">5. 强大且一致的分词 (Tokenization)
&lt;/h4>&lt;p>文本处理是NLP的第一步。&lt;code>transformers&lt;/code> 配套了 &lt;code>tokenizers&lt;/code> 库（一个用 Rust 编写的高性能库）。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>一致性：&lt;/strong> 提供了与 &lt;code>AutoModel&lt;/code> 对应的 &lt;code>AutoTokenizer&lt;/code>，确保您使用的分词器与预训练模型是严格匹配的。&lt;/li>
&lt;li>&lt;strong>高性能：&lt;/strong> 分词速度极快，可以并行处理大量文本。&lt;/li>
&lt;/ul>
&lt;h4 id="6-完整的生态系统-a-complete-ecosystem">6. 完整的生态系统 (A Complete Ecosystem)
&lt;/h4>&lt;p>&lt;code>transformers&lt;/code> 并不是孤立的，Hugging Face 围绕它构建了一整套工具链：&lt;/p>
&lt;ul>
&lt;li>&lt;code>datasets&lt;/code>: 用于高效加载和处理大型数据集（TB级别）。&lt;/li>
&lt;li>&lt;code>evaluate&lt;/code>: 用于评估模型性能的指标库。&lt;/li>
&lt;li>&lt;code>accelerate&lt;/code>: 用于简化分布式训练和混合精度训练的工具。&lt;/li>
&lt;li>&lt;code>diffusers&lt;/code>: 专注于扩散模型（如 Stable Diffusion）的库。&lt;/li>
&lt;/ul></description></item></channel></rss>