任何刚接触大语言模型(LLM)技术的新用户,都必须面对的最大难题就是“算力”。从显存、吞吐量到底层技术和软件,不同机器之间的差异足以让人头晕目眩;部署 LLM 时,这种差异会更加明显。归根结底,我们想在低成本下拿到最高质量,而真正的挑战就在于如何找到那个平衡点。
今天,我们就拿 AMD Instinct MI300X GPU 运行 GPT-OSS 120B 来近距离剖析这个问题。这个怪兽级GPU处理器是 AMD 的旗舰之一,拥有 192 GB HBM3 显存,理论峰值 653.7 TFLOPs,带宽高达 5.3 TB/s。MI300X 的显存比 H100 要高,而且云服务器的价格比 H100 更低(参考DigitalOcean云平台的价格),是测试大模型的理想平台。我们选用近期因“代理能力”和“代码能力”而热评不断的 OpenAI GPT-OSS gpt 教程 120B 作为示例模型。
本教程将手把手教你用 vLLM 在 AMD GPU 上跑通 GPT-OSS 120B。读完你将彻底掌握 vLLM、GPT-OSS,以及在 Gradient AMD GPU 服务器 上的每一步部署细节。
vLLM 是一个开源的高性能推理引擎,专为以卓越的速度和内存效率提供大型语言模型(LLM)服务而设计。通过优化 GPU 内存利用率,vLLM 比许多其他竞争方案提供更快的响应速度、更高的吞吐量和更低的延迟。其核心创新包括 PagedAttention 算法、对连续批处理的支持,以及与 Hugging Face 等主流模型生态系统的无缝兼容性。我们推荐使用 vLLM,正是基于这些优势特性。
GPT-OSS(20B 和 120B 版本)是 OpenAI 今年早些时候发布的旗舰级开源大语言模型(LLM)。这两个版本分别在其尺寸类别中成为目前最强大的智能体(agentic)和编程模型之一。值得注意的是,在发布时,GPT-OSS 120B 在标准推理基准测试中的表现可与 o4-Mini 模型相媲美;而 20B 版本在仅配备 16GB 虚拟内存的边缘设备上运行时,其表现也与 o3-Mini 模型相当。

我们推荐使用 GPT-OSS 120B 的原因在于:其采用开源且宽松的 Apache 2.0 许可证,便于针对各类任务进行微调,并可在任何场景中自由使用;同时,它在推理和编程任务上达到了当前最先进的(SOTA)性能水平。如上图结果所示,该模型在 Codeforces 基准测试中,其推理能力与旗舰级 o3 和 o4-Mini 模型表现相当。基于这些优势,GPT-OSS 120B 是任何希望在 vLLM 上运行编程模型的用户的理想起点。

首先,我们将启动一台搭载 MI300X GPU 的 Droplet。登录你的 DigitalOcean 云平台账户(可访问http://digitalocean.com注册),点击左侧边栏中的“GPU Droplets”链接(注:Droplet是DigitalOcean云服务器的产品名)。
进入创建界面后,选择 ATL (亚特兰大)数据中心——这是目前唯一提供 AMD GPU 的区域。向下滚动,在“GPU 平台”选项中选择“AMD”,然后选择单个 MI300X GPU。最后,从你团队可用的 SSH 密钥列表中选择一个密钥。
至此,你已准备好创建 Droplet!这里我们使用的DigitalOcean 云平台的AMD GPU Droplet服务器是按需实例,每小时仅1.99美元
点击右上角的“创建 GPU Droplet”按钮以启动实例。GPU Droplet 的启动可能需要几分钟时间。
待 GPU Droplet 准备就绪后,使用本地终端通过 SSH 登录该机器。随后,导航至你希望工作的目录,即可开始使用 Docker 部署 vLLM。
首先,我们将为部署设置一个快捷别名,用于下载并启动 Docker 容器。请将以下命令粘贴到终端中开始操作。该容器仅能在 MI300X GPU 上运行:
alias drun='sudo docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --shm-size 32G -v /data:/data -v $HOME:/myhome -w /myhome' drun rocm/vllm-dev:open-mi300-0
下载和启动过程可能需要一些时间。完成后,你将进入 Docker 容器内部。接下来,我们将在 AMD MI300X GPU Droplet 上部署 GPT-OSS 120b 模型。将以下命令粘贴至终端中启动服务:
export VLLM_ROCM_USE_AITER=1 export VLLM_USE_AITER_UNIFIED_ATTENTION=1 export VLLM_ROCM_USE_AITER_MHA=0 vllm serve openai/gpt-oss-120b --compilation-config '{"full_cuda_graph": true}'
该命令将启动 vLLM 服务,首先下载模型文件至容器中。若一切运行正常,你将看到与上方截图一致的提示信息。之后,你即可通过 OpenAI 的 Python 库访问部署在 0.0.0.0:8000 或 localhost:8000 的模型。
接下来,我们需要了解如何与已部署的模型进行交互以真正使用它。我们在此介绍两种主要方法:使用 cURL 和 OpenAI 的 Python 库。
首先,我们来看 cURL 方法。打开一个新的终端窗口,SSH 登录到远程机器,然后粘贴以下代码。我们将用此示例向模型请求一个简单任务:讲一个笑话。
curl http://localhost:8000/v1/chat/completions
-H "Content-Type: application/json"
-d '{ "model": "openai/gpt-oss-120b", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Tell me a joke." } ], "temperature": 0.7, "max_tokens": 100 }'
预期返回结果类似如下:
{ "id": "[anonymized]", "object": "chat.completion", "created": , "model": "openai/gpt-oss-120b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Sure, here's a classic one for you:\n\nWhy don’t scientists trust atoms?\n\nBecause they make up everything!", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning_content": null }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "service_tier": null, "system_fingerprint": null, "usage": { "prompt_tokens": 85, "total_tokens": 134, "completion_tokens": 49, "prompt_tokens_details": null }, "prompt_logprobs": null, "kv_transfer_params": null }
通过此方法,你可以执行多种任务,例如代码补全、工具调用和复杂函数调用。你可以尝试使用你自己的提示词,体验该模型的强大能力!
若你更倾向于使用 Python 编程,我们推荐使用 OpenAI 的 Python 库。在运行 vLLM 服务的终端窗口之外,启动一个 Jupyter Lab 实例。在终端中粘贴以下命令以安装所需依赖:
python3 -m venv venv source venv/bin/activate pip install openai jupyter jupyter lab --allow-root
使用 Cursor 或 VS Code 的内置浏览器功能,在本地浏览器中访问 Jupyter Lab(详细指引请参阅卓普云官网上的中文教程指南)。启动后,新建一个 Jupyter Notebook,在第一个代码单元格中粘贴以下 Python 代码:
from openai import OpenAI 设置 OpenAI 的 API 密钥和 API 基地址以使用 vLLM 的 API 服务
openai_api_key = "EMPTY" openai_api_base = "http://localhost:8000/v1" client = OpenAI( api_key=openai_api_key, base_url=openai_api_base, ) chat_response = client.chat.completions.create( model="openai/gpt-oss-120b", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Tell me a joke."}, ] ) print("Chat response:", chat_response)
若一切正常,你将看到类似以下的输出:
Chat response: ChatCompletion(id='chatcmpl-b600ce13dfd041a4a934ebe7826c8a44', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Why don’t scientists trust atoms?\n\nBecause they make up everything!', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=[], reasoning_content=None), stop_reason=None)], created=, model='openai/gpt-oss-120b', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=41, prompt_tokens=85, total_tokens=126, completion_tokens_details=None, prompt_tokens_details=None), prompt_logprobs=None, kv_transfer_params=None)
通过这种 Python 实现方式,你可以将 vLLM 集成到任意数量的应用程序和工作流中,包括自定义智能体。我们发现这种方法与 cURL 一样灵活实用,因为你可以充分利用 Python 生态系统中丰富的库和工具。
得益于 vLLM 和 ROCm 社区的不懈努力,在 AMD MI300X GPU Droplet 上运行 GPT-OSS 非常简便。借助 GPU Droplet 的便捷性,用户只需数分钟即可在当前最先进的硬件上启动这一强大模型,真正实现开箱即用的高性能 AI 体验。
当然,你也可以尝试在 DigitalOcean 的 AMD MI325X GPU Droplet 服务器上跑GPT OSS。如果你还需要了解 DigitalOcean 有哪些更优惠的 GPU 云服务器,可以直接咨询 DigitalOcean 中国区独家战略合作伙伴卓普云http://aidroplet.com,卓普云负责为所有使用 DigitalOcean 云平的中国企业提供技术支持。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/243120.html原文链接:https://javaforall.net
