Phi-3-mini-128k-instruct入门指南:Ubuntu系统下模型部署与测试
Phi-3-mini-128k-instruct入门指南:Ubuntu系统下模型部署与测试
想试试微软最新发布的小尺寸大模型Phi-3-mini吗?它虽然体积小巧,但拥有128K的超长上下文,在代码和推理任务上表现相当亮眼。如果你手头正好有Ubuntu系统的开发环境,或者想在云平台的GPU实例上快速体验,那这篇指南就是为你准备的。
我会带你从零开始,一步步在Ubuntu环境下把Phi-3-mini-128k-instruct跑起来。整个过程不复杂,从检查环境到最终测试,大概半小时就能搞定。即使你对Docker或者模型部署不太熟悉,跟着步骤走也能顺利完成。
1. 开始前的准备工作
在拉取镜像和启动服务之前,我们需要确保Ubuntu系统环境已经就绪。这就像盖房子前要打好地基一样,能避免很多后续的麻烦。
1.1 系统环境检查
首先,打开你的Ubuntu终端。我们主要检查两样东西:GPU驱动和Docker。
检查GPU驱动和CUDA对于打算使用GPU来加速模型推理的朋友,这一步很重要。在终端里输入:
nvidia-smi如果这个命令能正常运行,并显示出你的GPU型号、驱动版本以及CUDA版本信息,那说明GPU环境基本没问题。你会看到类似“Driver Version: 535.104.05”和“CUDA Version: 12.2”这样的信息。Phi-3-mini对CUDA版本通常要求11.8及以上,主流版本都能兼容。
如果命令报错“command not found”,那说明你可能还没安装NVIDIA驱动。你可以去NVIDIA官网根据你的显卡型号下载对应的驱动,或者使用Ubuntu的附加驱动管理器来安装。
检查Docker环境Phi-3-mini的镜像通常通过Docker来分发和运行,所以Docker必不可少。检查一下:
docker --version同样,如果显示了版本号(比如Docker version 24.0.7),那就没问题。如果没有安装,可以运行以下命令来安装Docker:
# 更新软件包索引 sudo apt-get update # 安装必要的依赖 sudo apt-get install ca-certificates curl # 添加Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # 设置Docker仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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 docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后,记得将当前用户加入docker组,这样就不用每次都加sudo了:
sudo usermod -aG docker $USER执行完这条命令后,你需要注销并重新登录,或者重启系统,这个改动才会生效。
1.2 获取模型镜像
环境准备好之后,我们就要去获取Phi-3-mini的镜像了。这里我们以在星图GPU平台上操作为例,因为平台提供了预置好的镜像,省去了我们自己配置环境的麻烦。
- 登录平台:首先,访问星图GPU平台并登录你的账号。
- 创建实例:在控制台找到“创建实例”或类似的按钮。关键步骤在于选择镜像。
- 选择镜像:在镜像选择页面,你可以直接搜索“Phi-3-mini-128k-instruct”。平台通常会提供多个版本,选择那个标注了“最新”或者版本号最高的镜像。镜像描述里一般会写明它已经集成了像vLLM或Transformers这样的推理后端,开箱即用。
- 配置资源:根据你的需求选择GPU型号(比如A100、V100等)和CPU、内存配置。对于Phi-3-mini这个小模型,中等规格的GPU(如T4、A10)就完全够用了,能获得非常快的响应速度。
- 完成创建:配置好网络、磁盘等选项后,点击创建。等待几分钟,实例就会启动完成。
实例创建成功后,平台会提供给你一个公网IP地址和登录方式(通常是SSH)。记住这个IP,我们后面会用到。
2. 部署与启动模型服务
拿到运行着镜像的实例后,我们就要进入系统,把模型服务真正跑起来。
2.1 连接到你的实例
打开你本地Ubuntu的终端,使用SSH命令连接到刚才创建的实例。命令格式如下:
ssh username@<你的实例公网IP>将username替换成平台提供的默认用户名(如ubuntu、root等),将<你的实例公网IP>替换成实际IP。如果是第一次连接,会提示你确认主机密钥,输入yes即可。
连接成功后,你就进入了云主机的命令行环境。我们可以先确认一下Docker服务是否正常运行:
sudo systemctl status docker看到状态是active (running)就对了。
2.2 启动模型推理服务
预置镜像的好处就是,所有复杂的依赖和配置都已经打包好了。我们通常只需要运行一个Docker容器就能启动服务。具体的启动命令可能会因镜像的封装方式略有不同,但大同小异。
一种常见的方式是,镜像已经将启动脚本设置为默认命令。你可以用以下命令查看并运行容器:
# 查看已有的镜像 docker images # 运行容器,并将容器的端口(例如8000)映射到主机的端口 docker run -d --gpus all -p 8000:8000 --name phi3-mini <镜像名称或ID>这里的-p 8000:8000是把容器内部的8000端口映射到宿主机的8000端口,这样我们才能从外部访问模型服务。--gpus all是让容器能使用所有GPU。--name是给容器起个名字,方便管理。
另一种可能是,镜像的文档或启动说明中提供了docker-compose.yml文件。如果存在,使用docker-compose up -d启动会更方便,因为它能管理更多的服务配置。
启动后,检查容器是否在运行:
docker ps你应该能看到一个名为phi3-mini的容器,状态是Up。
2.3 验证服务状态
服务启动后,我们得确认它是不是真的在正常工作。最直接的方法就是向它发送一个简单的HTTP请求。模型服务通常提供一个健康检查接口或简单的对话接口。
打开另一个终端窗口(或者在你本地机器上),使用curl命令测试:
curl http://<你的实例公网IP>:8000/health或者
curl http://<你的实例公网IP>:8000/v1/models如果服务正常,你会收到一个JSON格式的响应,比如{"status": "ok"}或者列出当前加载的模型为Phi-3-mini-128k-instruct。
如果返回“连接拒绝”之类的错误,可能是服务还没完全启动好,等个十几秒再试;也可能是端口映射不对,检查一下docker ps命令输出的端口映射信息。
3. 测试模型能力
服务跑起来了,现在就是最有趣的环节——测试模型的本事。我们通过两种方式来试试它的对话和代码生成能力。
3.1 通过命令行快速对话
模型服务一般兼容OpenAI的API格式,这意味着我们可以用像curl这样的工具直接和它对话。我们来问它一个简单的问题。
在终端中运行以下命令(记得替换IP地址):
curl http://<你的实例公网IP>:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Phi-3-mini-128k-instruct", "messages": [ {"role": "user", "content": "用Python写一个函数,计算斐波那契数列的前n项。"} ], "max_tokens": 500 }'这个命令向模型的聊天接口发送了一个请求,要求它生成代码。稍等片刻,你会收到一个包含模型回复的JSON响应。在回复的choices[0].message.content字段里,就是你想要的Python函数代码了。试试看,它写的代码质量怎么样?
3.2 编写一个简单的Python客户端
用命令行测试一次还行,但要想更方便地交互,写个简单的Python脚本更好。我们使用openai这个Python库,因为它兼容遵循OpenAI API标准的后端。
首先,在你的本地开发环境或实例本身上安装必要的库:
pip install openai然后,创建一个名为test_phi3.py的文件,写入以下内容:
from openai import OpenAI # 注意:这里的基础URL指向我们自己部署的服务 client = OpenAI( base_url="http://<你的实例公网IP>:8000/v1", # 替换为你的IP和端口 api_key="no-key-required" # 如果服务端不需要密钥,这里可以随意填写 ) # 测试基础对话能力 print("=== 测试1:基础问答 ===") response = client.chat.completions.create( model="Phi-3-mini-128k-instruct", messages=[ {"role": "user", "content": "解释一下什么是递归,并给出一个简单的例子。"} ], max_tokens=300 ) print("模型回复:", response.choices[0].message.content) print("\n") # 测试代码生成与解释能力 print("=== 测试2:代码生成与解释 ===") response = client.chat.completions.create( model="Phi-3-mini-128k-instruct", messages=[ {"role": "user", "content": "我是一个编程新手,请用Python写一个冒泡排序算法,并逐行添加注释解释每一步在做什么。"} ], max_tokens=600 ) print("模型回复:\n", response.choices[0].message.content)记得把脚本中的<你的实例公网IP>替换掉。保存文件后,在终端运行:
python test_phi3.py运行这个脚本,你会看到模型对递归的解释,以及一份带有详细注释的冒泡排序Python代码。通过这个测试,你不仅能验证服务是否通畅,还能直观感受Phi-3-mini在代码生成和逻辑解释方面的能力。
4. 总结
走完这一套流程,你应该已经在Ubuntu环境下成功部署并运行起Phi-3-mini-128k-instruct模型了。从检查环境、获取镜像、启动服务到最后的测试,每一步都是动手实践的过程。
整体感受下来,Phi-3-mini的部署过程算是比较顺畅的,这主要得益于现在成熟的容器化技术和平台提供的预置镜像,把繁琐的环境配置工作都省去了。模型本身的响应速度也很快,对于代码生成和逻辑推理这类任务,给出的结果质量确实不错,对于日常的辅助编程或者学习解答来说,是个挺趁手的工具。
如果你在部署过程中遇到了问题,比如端口冲突、GPU内存不足导致容器启动失败,或者API调用格式不对,可以多检查一下Docker的日志(docker logs phi3-mini),里面通常会有详细的错误信息。接下来,你可以尝试用更复杂的提示词去挖掘它的能力,或者探索如何将它集成到你自己的应用里去。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
