Hugging Face从零开始的、保姆级的详细教程
这是一个从零开始的、保姆级的详细教程。由于你使用的是阿里云国内服务器我们还需要解决国内无法直接访问 Hugging Face 的网络问题。第一步在阿里云租赁并配置服务器要运行 7B 级别的模型并且使用bfloat16精度模型本身会占用约 14GB 的显存加上 8192 长度的上下文你必须租用一张显存至少为 24GB 的 GPU例如 NVIDIA A10, RTX 3090, RTX 4090 或 V100 32G。登录阿里云控制台进入“云服务器 ECS”购买页面。计费方式强烈建议选择“按量付费”用完随时释放非常省钱。实例规格筛选“GPU 实例”。选择带有至少 24GB 显存的显卡例如ecs.gn7i系列通常配备 A10 24GB 显卡。镜像操作系统在“公共镜像”中选择Ubuntu。版本选择Ubuntu 22.04 64位或20.04 64位。关键点阿里云通常有一个选项可以“自动安装 GPU 驱动”勾选它选择最新的 CUDA 12.x 版本这会帮你省去极大的麻烦。如果没有建议在市场镜像中搜索“Ubuntu 22.04 预装 CUDA”的镜像。网络和安全组必须勾选“分配公网 IPv4 地址”否则你连不上它。带宽按需选择按使用流量计费即可。安全组极其重要新建一个安全组在入方向规则中必须开放 22 端口用于远程连接和8000 端口用于我们一会儿模型对外提供 API 接口。登录凭证设置一个 Root 密码并牢记。确认订单并启动实例。稍等片刻在控制台找到你这台服务器的公网 IP 地址。第二步连接到阿里云服务器现在我们回到你的本地电脑Windows/Mac 均可。打开本地电脑的终端Windows 用户按WinR输入cmd或powershellMac 用户打开“终端”应用。输入以下命令连接服务器将你的公网IP替换为刚才在阿里云获取的 IPBashssh root你的公网IP第一次连接会提示是否信任该主机输入yes并回车。输入你刚才在阿里云设置的 Root 密码输入时屏幕不会有任何显示盲输后回车即可。看到rootxxxx:~#的提示符说明你已经成功进入了云服务器。第三步配置服务器环境与网络解决 Hugging Face 连通问题国内服务器默认是打不开 Hugging Face 的我们需要配置镜像站并安装必要的 Python 库。在终端中依次执行以下命令1. 配置 Hugging Face 国内镜像为了让 vLLM 能够顺利下载模型设置环境变量Bashexport HF_ENDPOINThttps://hf-mirror.com(注意每次断开重新连接服务器后如果要重新下载模型都需要重新执行这一句。)2. 安装 MinicondaPython 环境管理器Bashwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装过程中一路按Enter遇到提示输入yes。安装完成后关闭当前终端重新 SSH 连接一次服务器使 conda 生效。你会看到命令行前面多了一个(base)。3. 创建虚拟环境并安装 vLLMBash# 创建一个名为 vllm_env 的 Python 3.10 环境 conda create -n vllm_env python3.10 -y # 激活环境 conda activate vllm_env # 安装 vLLM 和相关的依赖包 pip install vllm0.4.3 transformers4.42.0 huggingface_hub第四步下载并启动 Mistral 模型服务现在环境准备好了我们将使用你提供的命令。但我为你稍微调整了一下增加了一个--host 0.0.0.0这是为了允许你的本地电脑通过公网 IP 访问这个服务默认只允许服务器内部访问。在服务器终端运行Bash# 确保你已经激活了环境并且设置了镜像如果没有请再执行一遍下面两句 conda activate vllm_env export HF_ENDPOINThttps://hf-mirror.com # 启动服务 python -m vllm.entrypoints.openai.api_server \ --model mistralai/Mistral-7B-Instruct-v0.3 \ --dtype bfloat16 \ --max-model-len 8192 \ --host 0.0.0.0 \ --port 8000发生了什么由于是第一次运行vLLM 会自动通过镜像站从 Hugging Face 下载大约 14GB 的模型权重这需要几分钟到十几分钟取决于服务器带宽。下载完成后模型会被加载到显存中。当你看到终端输出类似Uvicorn running on http://0.0.0.0:8000时说明部署成功API 服务已经就绪第五步在本地 VS Code 中调用模型现在让服务器上的终端挂着不要关闭我们回到你的本地电脑。打开本地的 VS Code。新建一个文件夹和 Python 文件例如test_mistral.py。在本地电脑的终端中安装 OpenAI 的官方 Python 库因为 vLLM 提供的接口与 OpenAI 完全兼容Bashpip install openai在test_mistral.py中写入以下代码Pythonfrom openai import OpenAI # 1. 配置客户端 # 将下面的 IP 替换为你阿里云服务器的【公网IP】 client OpenAI( base_urlhttp://你的阿里云公网IP:8000/v1, api_keyEMPTY, # vLLM 默认不需要验证随便填即可 ) # 2. 发送对话请求 print(正在呼叫阿里云上的 Mistral 模型...) response client.chat.completions.create( modelmistralai/Mistral-7B-Instruct-v0.3, messages[ {role: system, content: You are a helpful AI assistant. Please reply in Chinese.}, {role: user, content: 请用通俗易懂的话解释一下什么是大语言模型LLM} ], temperature0.7, max_tokens512 ) # 3. 打印结果 print(\n 模型的回答 ) print(response.choices[0].message.content)在 VS Code 中运行这个 Python 文件。如果一切顺利你就能在本地终端看到远端服务器上 Mistral 模型实时生成的回答了。 小白避坑排查指南本地运行 Python 报错ConnectionRefusedError或超时 百分之百是因为阿里云安全组没有开放 8000 端口。请回到阿里云控制台 - 实例详情 - 安全组 - 配置规则 - 添加一条规则协议选 TCP端口范围填8000/8000授权对象填0.0.0.0/0允许所有人访问。服务器运行 vLLM 时报错Out of Memory (OOM) 说明你租的显卡显存不足。如果是 16GB 的卡如 T48192 的长度加上 bfloat16 的 7B 模型会爆显存。你可以尝试将命令中的--max-model-len 8192改小例如改成--max-model-len 4096或者换租显存更大的实例。测试完毕后千万记得在阿里云控制台释放实例按量付费的服务器如果只关机是不停止扣费的除非开启了停机不收费功能不用了必须“释放”。