Phi-3-Mini-128K大模型快速部署教程:3步完成Ubuntu环境搭建
Phi-3-Mini-128K大模型快速部署教程:3步完成Ubuntu环境搭建
想试试微软最新开源的Phi-3-Mini大模型,但被复杂的部署步骤劝退?别担心,这篇教程就是为你准备的。我最近刚在自己的Ubuntu服务器上折腾了一遍,发现其实没那么难,关键是把几个核心步骤理清楚。
今天我就带你走一遍最简流程,从系统环境检查到模型成功跑起来,争取10分钟内搞定。整个过程我把它浓缩成了三步:准备环境、拉取镜像、启动测试。你不需要是深度学习专家,只要会敲几行Linux命令,跟着做就行。
1. 开始前的准备工作
在动手之前,我们先花两分钟看看需要准备些什么。这能帮你少走很多弯路。
首先,你需要一台运行Ubuntu系统的电脑或服务器。我测试用的是Ubuntu 22.04 LTS,这个版本比较稳定,社区支持也好。20.04 LTS也行,但建议用22.04,后面装驱动什么的会更顺利。
硬件方面,Phi-3-Mini对算力要求不算太高,但有个独立显卡体验会好很多。显存有个8GB就够用了,如果只有4GB,跑起来可能有点慢,但也不是不行。CPU和内存的话,现在的电脑基本都够用。
软件上,最关键的是显卡驱动和Docker。驱动保证显卡能正常工作,Docker则是我们用来一键部署模型的“神器”。如果你之前没接触过Docker,也不用怕,它就是个打包好的软件容器,我们只需要几条命令就能把模型环境全部搞定,省去了自己配环境的麻烦。
最后,确保你的网络连接正常,因为我们要从网上下载一个大约8GB的模型镜像文件。好了,准备工作就这些,我们开始吧。
2. 第一步:检查并配置系统环境
这一步我们要确保系统基础环境是OK的,主要是看显卡和Docker。
2.1 检查显卡和驱动
打开你的终端,先输入下面这行命令,看看系统认不认识你的显卡:
lspci | grep -i nvidia
如果能看到类似“NVIDIA Corporation”的输出,说明显卡硬件被识别了。接下来,检查驱动有没有装好:
nvidia-smi
这个命令会弹出一个表格,显示你的显卡型号、驱动版本,还有CUDA版本。像下面这样就是正常的:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.161.07 Driver Version: 535.161.07 CUDA Version: 12.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... WDDM | 00000000:01:00.0 On | N/A |
| 0% 45C P8 10W / 130W | 100MiB / 8192MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
如果nvidia-smi命令报错或者没输出,那说明驱动没装。别急,去NVIDIA官网下载对应你显卡型号的驱动,或者用Ubuntu的“附加驱动”工具在线安装,选一个推荐版本装上,然后重启电脑再试。
2.2 安装和配置Docker
现在来装Docker。在终端里依次执行下面这几条命令:
# 更新软件包列表
sudo apt-get update
# 安装一些必要的工具,让apt可以通过HTTPS使用仓库
sudo apt-get install -y ca-certificates curl gnupg
# 添加Docker的官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 设置Docker的稳定版仓库
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新,并安装Docker引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
装好之后,把你自己加到docker用户组里,这样以后就不用每次都加sudo了:
sudo usermod -aG docker $USER
重要提示:执行完上面这行命令后,你需要完全退出当前终端,重新登录一次,或者直接重启电脑,这个改动才能生效。
最后,安装NVIDIA Container Toolkit,这是让Docker容器能用上你显卡的关键:
# 添加仓库和密钥
distribution=$(. /etc/os-release && echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 安装工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 配置Docker使用NVIDIA运行时
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
环境检查到这里就完成了。你可以用docker --version和docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi这两个命令测试一下,如果都能正常显示信息,说明环境完美。
3. 第二步:拉取并启动模型镜像
环境好了,最核心的一步来了。Phi-3-Mini的开发者已经把模型和它需要的所有环境打包成了一个Docker镜像,我们直接拉下来用就行,特别省事。
打开终端,执行这条拉取镜像的命令:
docker pull csdnpractices/phi-3-mini-128k-instruct:latest
这条命令会从镜像仓库把打包好的模型下载到你的电脑上。镜像大小在8GB左右,所以下载时间取决于你的网速。泡杯茶,稍等一会儿。
下载完成后,用下面这条命令启动模型服务:
docker run -d --gpus all -p 8000:8000 --name phi3-mini csdnpractices/phi-3-mini-128k-instruct:latest
我来解释一下这条命令在干什么:
docker run:启动一个新的容器。-d:让容器在后台运行,这样终端不会被占用。--gpus all:把宿主机的所有显卡都分配给这个容器用。-p 8000:8000:把容器内部的8000端口映射到你电脑的8000端口。这样你就能通过访问localhost:8000来调用模型了。--name phi3-mini:给这个容器起个名字,方便后面管理。- 最后是镜像的名字和标签。
运行之后,你可以用docker ps命令查看容器是不是在正常运行。看到phi3-mini这个容器状态是Up就对了。
4. 第三步:快速测试与API调用
服务跑起来了,我们得试试它是不是真的能工作。Phi-3-Mini提供了一个标准的HTTP API接口,我们用最简单的curl命令或者写个Python小脚本就能测试。
4.1 用curl命令快速问好
打开终端,输入下面的命令:
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "phi-3-mini-128k-instruct",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己。"}
],
"max_tokens": 100
}'
如果一切正常,你会看到一段JSON格式的回复,里面choices[0].message.content这个字段就是模型说的话。它可能会说:“你好!我是Phi-3-Mini,一个由微软开发的语言模型...”。看到这个,就恭喜你,部署成功了!
4.2 写个Python脚本进行对话
用命令行测试有点不直观,我们写个简单的Python脚本,体验更完整。创建一个叫test_phi3.py的文件,把下面的代码贴进去:
import requests
import json
# 模型服务的地址
url = "http://localhost:8000/v1/chat/completions"
# 请求头
headers = {
"Content-Type": "application/json"
}
# 准备我们要问的问题
data = {
"model": "phi-3-mini-128k-instruct",
"messages": [
{"role": "user", "content": "用简单的语言解释一下什么是人工智能?"}
],
"max_tokens": 150, # 控制回答的长度
"temperature": 0.7 # 控制回答的随机性,0.7比较适中
}
# 发送请求
response = requests.post(url, headers=headers, data=json.dumps(data))
# 处理回复
if response.status_code == 200:
result = response.json()
answer = result['choices'][0]['message']['content']
print("模型回复:")
print(answer)
else:
print(f"请求失败,状态码:{response.status_code}")
print(response.text)
保存文件,然后在终端里运行它:
python3 test_phi3.py
脚本会向模型提问“什么是人工智能?”,并把模型的回答打印出来。如果看到一段通顺的解释,说明整个调用链路完全打通了。
4.3 试试连续对话
大模型好玩的地方在于能联系上下文。我们修改一下脚本,让它支持多轮对话:
import requests
import json
url = "http://localhost:8000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
# 初始化对话历史
conversation_history = [
{"role": "user", "content": "今天的天气真好。"},
{"role": "assistant", "content": "是的,阳光明媚,适合出去走走。"}
]
# 用户的新问题
new_question = "那你能推荐一些户外活动吗?"
conversation_history.append({"role": "user", "content": new_question})
data = {
"model": "phi-3-mini-128k-instruct",
"messages": conversation_history, # 把整个历史传过去
"max_tokens": 100
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
reply = response.json()['choices'][0]['message']['content']
print(f"你:{new_question}")
print(f"模型:{reply}")
else:
print("对话失败。")
运行这个脚本,你会发现模型的回答是基于前面“天气真好”这个上下文的,它会推荐散步、骑行之类的活动。这说明模型记住了对话历史。
5. 部署后的一些实用建议
走到这一步,你的Phi-3-Mini已经在本地跑起来了。不过在实际用的时候,可能会遇到一些小问题,这里我分享几个经验。
首先关于性能,如果你发现模型回复特别慢,可以先用nvidia-smi命令看看显卡是不是在全力工作。有时候第一次运行会慢一点,因为模型要加载到显存里。后续的对话就会快很多。
如果遇到端口冲突(比如8000端口被别的程序占了),可以在启动Docker容器的时候换一个端口,比如把-p 8000:8000改成-p 8080:8000,这样你访问localhost:8080就行。
模型的所有文件都在Docker容器里。如果你想查看生成的文本或者日志,可以用docker logs phi3-mini命令。如果想进入容器内部看看,用docker exec -it phi3-mini /bin/bash。
最后,当你用完想关掉服务时,别直接关终端。用docker stop phi3-mini来停止容器,用docker start phi3-mini来重新启动。如果想彻底删除,用docker rm phi3-mini。
6. 总结
整个流程走下来,其实部署一个开源大模型没有想象中那么复杂,关键就是利用好Docker这个工具,把繁琐的环境配置工作给省掉了。从检查驱动,到拉取镜像,再到最后启动测试,核心步骤就这三块。
我比较喜欢这种打包好的镜像方式,它把模型、依赖库、甚至运行的API服务都整合在了一起,对于只是想快速体验或者开发测试的人来说,效率非常高。你不需要去关心PyTorch是什么版本、transformers库怎么装,直接就能用。
当然,这只是第一步。模型跑起来之后,你可以用它来做更多有趣的事情,比如试着调整temperature参数让回答更有创意,或者结合LangChain这样的框架搭建更复杂的应用。不过那就是另一个话题了。希望这篇教程能帮你顺利迈出第一步,在实际操作中如果遇到问题,多看看命令的报错信息,大部分都能找到解决方案。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)