Llama-3.2-3B从零开始:Ollama部署+Docker Compose编排多模型服务
本文介绍了如何在星图GPU平台上自动化部署【ollama】Llama-3.2-3B镜像,快速搭建轻量级大语言模型服务。该平台简化了部署流程,用户可轻松启动该模型,并将其应用于智能对话、文本总结与内容创作等典型场景,显著提升开发与测试效率。
Llama-3.2-3B从零开始:Ollama部署+Docker Compose编排多模型服务
想试试Meta最新开源的轻量级大模型Llama-3.2-3B,但被复杂的部署环境劝退?或者你已经部署了一个模型,但想同时运行多个模型服务,却不知道如何管理?
别担心,这篇文章就是为你准备的。我将带你从零开始,用最简单的方式,在本地或服务器上部署Llama-3.2-3B模型,并且更进一步,教你如何用Docker Compose轻松编排和管理多个模型服务。整个过程就像搭积木一样简单,即使你之前没怎么接触过Docker,也能跟着一步步做下来。
1. 准备工作:认识我们的工具
在开始动手之前,我们先花几分钟了解一下今天要用到的几个核心工具。放心,我不会讲那些晦涩难懂的技术原理,就用大白话告诉你它们是干什么的。
1.1 Llama-3.2-3B:小而精的智能助手
Llama-3.2-3B是Meta(就是做Facebook和Instagram的那家公司)在2024年发布的最新开源大语言模型。名字里的“3B”指的是它有30亿个参数,你可以把它理解成模型的“脑容量”。
它有什么特点?
- 身材小巧,能力不弱:相比动辄几百亿参数的大模型,3B的体量让它对硬件要求很低,普通电脑就能跑起来,但它在很多任务上的表现已经相当不错了。
- 多语言支持:它不仅能理解英文,对中文等多种语言也有很好的支持,是个“国际范”的助手。
- 专门优化过:Meta专门针对聊天对话、信息总结等场景对它进行了训练和优化,所以用它来聊天、回答问题、总结文章会特别顺手。
- 完全开源免费:你可以随便下载、使用甚至修改它,没有任何限制。
简单来说,Llama-3.2-3B就像一个装在口袋里的“迷你版ChatGPT”,虽然体积小,但日常聊天、处理文档、回答问题的活儿都能干得很好。
1.2 Ollama:大模型的“一键启动器”
如果说Llama模型是一个功能强大的发动机,那么Ollama就是给这个发动机配上的“一键启动按钮”和“方向盘”。
以前要运行一个大模型,你得折腾各种Python库、配置复杂的环境、处理令人头疼的依赖问题。Ollama把这些麻烦事全包了。它提供了一个超级简单的命令行工具,你只需要一条命令,就能把模型下载下来并运行起来,还能通过一个简单的网页界面或者API来和模型对话。
Ollama的核心好处:
- 开箱即用:一条命令完成下载、部署、运行。
- 统一管理:可以轻松安装、运行、切换不同的模型。
- 提供API:方便其他程序调用模型的能力。
1.3 Docker Compose:多服务的“总指挥”
当我们只运行一个Ollama服务时,一切都很简单。但如果我想同时运行Llama-3.2-3B、另一个7B的模型,甚至再加一个图像生成模型呢?手动管理多个服务的启动、停止、端口配置会非常混乱。
这时候就需要Docker Compose出场了。你可以把它想象成一个乐高项目的“搭建说明书”。
- Docker:把每个应用(比如Ollama)和它需要的所有环境(系统库、配置文件等)打包成一个独立的“集装箱”(容器)。这个集装箱在任何支持Docker的电脑上都能以完全相同的方式运行。
- Docker Compose:一个用来定义和运行多个Docker容器的工具。你只需要写一个简单的配置文件(
docker-compose.yml),它就能按照你的要求,同时启动多个“集装箱”,并安排好它们之间的通信和协作。
用上Docker Compose之后,管理多个模型服务就从“手忙脚乱地操作好几个命令行窗口”,变成了“编辑一个文件,然后运行一条命令”。
好了,工具介绍完毕。接下来,我们就进入实战环节。
2. 第一步:单模型快速体验
在搭建复杂的多模型服务之前,我们先通过最简单的方式,快速把Llama-3.2-3B跑起来,感受一下它的能力。这能帮你建立信心,也确保基础环境是没问题的。
2.1 安装Ollama
Ollama的安装极其简单,几乎全平台通用。
在Mac上安装: 直接打开终端(Terminal),粘贴下面这条命令:
curl -fsSL https://ollama.com/install.sh | sh
安装脚本会自动完成所有工作。
在Linux上安装: 同样使用上面这条命令即可。如果你的系统比较老,可能需要先确保curl命令已经安装。
在Windows上安装:
- 前往Ollama官网(https://ollama.com)下载Windows安装程序(.exe文件)。
- 双击运行安装程序,按照提示完成安装。
- 安装完成后,你可以在开始菜单找到“Ollama”应用并运行它,或者直接在PowerShell或命令提示符中使用
ollama命令。
安装完成后,在终端里输入 ollama --version,如果能看到版本号,就说明安装成功了。
2.2 拉取并运行Llama-3.2-3B
模型运行只需要一条命令。打开你的终端,输入:
ollama run llama3.2:3b
第一次运行时会自动从网上下载模型文件,模型大小约1.8GB,根据你的网速需要等待几分钟。
下载完成后,你会直接进入一个交互式对话界面,看到类似 >>> 的提示符。这表示模型已经启动,正在等待你输入。
现在,你就可以像和朋友聊天一样向它提问了。比如:
>>> 用一句话介绍一下你自己。
模型会立刻开始生成回答。试试问它一些问题,比如写一首短诗、总结一段话、或者回答一些常识性问题,感受一下这个3B小模型的能力。
如何退出? 在对话界面输入 /bye 即可退出交互模式,回到终端命令行。
2.3 使用Ollama的Web UI(可选)
除了命令行聊天,Ollama还自带一个轻量级的网页界面,用起来更直观。
- 首先,确保Ollama服务正在运行(如果刚刚退出了,需要重新运行
ollama run llama3.2:3b,或者用ollama serve命令在后台启动服务)。 - 打开你的浏览器,访问:
http://localhost:11434 - 你会看到一个非常简洁的页面,这就是Ollama内置的Web UI。在这里你可以选择模型、输入问题,并以更友好的方式查看对话历史。
至此,单模型的部署和体验就完成了,是不是比想象中简单很多?接下来,我们要进入更强大的阶段:用Docker Compose来编排服务。
3. 第二步:使用Docker Compose编排多模型服务
单模型运行满足了基本需求,但如果我们有更复杂的场景呢?比如:
- 需要同时运行Llama-3.2-3B和一个更大的Llama-3.1-8B模型,根据任务难度切换使用。
- 除了文本模型,还想同时运行一个Stable Diffusion之类的图像生成模型。
- 希望给每个模型服务分配固定的端口,方便其他程序(比如自己写的聊天机器人前端)通过API来调用。
手动管理多个Ollama实例会很麻烦。而Docker Compose可以让我们用一份配置文件,轻松搞定所有服务的生命周期管理。
3.1 安装Docker和Docker Compose
首先,我们需要确保系统里已经安装了Docker和Docker Compose。
Docker Desktop(推荐给Mac和Windows用户): 这是最简单的方式。直接去Docker官网(https://www.docker.com/products/docker-desktop/)下载Docker Desktop安装包并安装。它自带了Docker引擎、Docker CLI和Docker Compose。安装后启动Docker Desktop,任务栏或菜单栏会出现一个小鲸鱼图标。
在Linux上安装Docker和Docker Compose: 对于Linux系统,可以通过包管理器安装。以Ubuntu为例,可以依次执行以下命令:
# 更新软件包索引
sudo apt-get update
# 安装Docker
sudo apt-get install docker.io
# 启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 将当前用户加入docker组,避免每次都要sudo
sudo usermod -aG docker $USER
# 注意:执行此命令后需要**注销并重新登录**或重启系统才能生效
# 安装Docker Compose插件(新版本Docker已集成)
sudo apt-get install docker-compose-plugin
安装完成后,在终端输入 docker --version 和 docker compose version 来验证安装是否成功。
3.2 编写Docker Compose配置文件
接下来是核心步骤:创建我们的“搭建说明书”。在你喜欢的位置(比如 ~/projects/ollama-multi)新建一个文件夹,并在里面创建一个名为 docker-compose.yml 的文件。
用文本编辑器(如VSCode、Notepad++,甚至系统自带的记事本)打开这个文件,将以下内容复制进去:
version: '3.8'
services:
# 服务1:Llama-3.2-3B 文本模型
llama3-2-3b:
image: ollama/ollama:latest
container_name: ollama-llama3.2-3b
ports:
- "11435:11434" # 将容器内的11434端口映射到主机的11435端口
volumes:
- ./ollama-data/llama3.2-3b:/root/.ollama # 持久化存储模型数据
command: serve
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu] # 如果宿主机有NVIDIA GPU并安装了驱动,则启用GPU支持
# 在容器启动后自动拉取指定模型(可选,第一次启动时会自动下载)
# 你可以取消下面几行的注释,让容器启动时自动拉取模型
# entrypoint: ["/bin/sh", "-c"]
# command: |
# ollama serve &
# sleep 10
# ollama pull llama3.2:3b
# wait
# 服务2:Llama-3.1-8B 文本模型(示例,你可以换成任何Ollama支持的模型)
llama3-1-8b:
image: ollama/ollama:latest
container_name: ollama-llama3.1-8b
ports:
- "11436:11434" # 映射到另一个端口,避免冲突
volumes:
- ./ollama-data/llama3.1-8b:/root/.ollama
command: serve
# 同样可以配置GPU和自动拉取模型
# deploy: ...
# entrypoint: ...
# 服务3:你可以继续添加更多服务,比如一个图像生成模型
# stable-diffusion:
# image: another-ai-image:latest
# container_name: sd-webui
# ports:
# - "7860:7860"
# volumes: ...
networks:
default:
name: ollama-network # 为所有服务创建一个共同的网络,方便内部通信
让我们拆解一下这个配置文件的关键部分:
- 定义服务:在
services:下面,我们定义了两个服务llama3-2-3b和llama3-1-8b。每个服务对应一个独立的Docker容器。 - 使用镜像:
image: ollama/ollama:latest指定了容器使用官方最新的Ollama镜像。 - 容器命名:
container_name给容器起个有意义的名字,方便管理。 - 端口映射:
ports: - "11435:11434"这是最关键的一步。它把容器内部的Ollama服务端口(默认11434)映射到了你电脑(宿主机)的11435端口。这样,你访问localhost:11435就是在访问第一个容器里的Ollama。第二个服务映射到了11436端口,以此类推,避免了端口冲突。 - 数据持久化:
volumes: - ./ollama-data/llama3.2-3b:/root/.ollama把容器内存储模型文件的目录挂载到宿主机的./ollama-data/llama3.2-3b文件夹。这样即使删除了容器,下载好的模型也不会丢失。 - 启动命令:
command: serve告诉容器启动后运行ollama serve命令来启动Ollama服务。 - GPU支持:
deploy:部分是可选的。如果你的电脑有NVIDIA显卡并且安装了正确的Docker GPU运行时(nvidia-container-toolkit),这个配置可以让容器使用GPU来加速模型推理,速度会快很多。 - 自动拉取模型:注释掉的
entrypoint和command部分展示了一种在容器启动后自动下载模型的方法。第一次启动时,你可能需要进入容器手动拉取,或者取消注释这段代码。
3.3 启动多模型服务集群
配置文件写好了,现在让我们启动这个“模型舰队”。
- 打开终端,进入到存放
docker-compose.yml文件的目录(~/projects/ollama-multi)。 - 运行以下命令:
docker compose up -d-d参数表示在“后台”(detached)模式运行,这样终端不会被占用。
你会看到Docker开始拉取 ollama/ollama 镜像(如果本地没有的话),然后创建并启动两个容器。这个过程可能需要一两分钟。
启动完成后,你可以用下面的命令查看运行状态:
docker compose ps
如果看到两个服务的状态都是 running,那就大功告成了!
3.4 管理模型与进行推理
服务已经跑起来了,但它们还是“空壳”,里面没有模型。我们需要进入每个容器,拉取对应的模型。
为第一个服务(Llama-3.2-3B)拉取模型:
# 进入名为 ollama-llama3.2-3b 的容器内部
docker exec -it ollama-llama3.2-3b bash
# 现在你在容器内部了,拉取模型
ollama pull llama3.2:3b
# 拉取完成后,可以测试运行一下
ollama run llama3.2:3b
# 问个问题测试,然后输入 /bye 退出
# 退出容器
exit
为第二个服务(Llama-3.1-8B)拉取模型:
docker exec -it ollama-llama3.1-8b bash
ollama pull llama3.1:8b
exit
现在,如何访问这两个服务?
- Llama-3.2-3B服务:打开浏览器,访问
http://localhost:11435。这就是运行在11435端口的Ollama Web UI,它连接的是我们第一个容器里的服务。 - Llama-3.1-8B服务:打开另一个浏览器标签页,访问
http://localhost:11436。
看,两个完全独立的模型服务同时运行在你的机器上,互不干扰!你可以同时在两个网页里向不同的模型提问,对比它们的回答。
通过API调用: 除了Web UI,更常用的方式是通过API。Ollama提供了兼容OpenAI格式的API。例如,用 curl 命令调用Llama-3.2-3B服务生成文本:
curl http://localhost:11435/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "为什么天空是蓝色的?",
"stream": false
}'
这样,你自己的应用程序就可以通过访问不同的端口(11435, 11436)来调用不同的模型了。
4. 第三步:进阶技巧与日常管理
基础的多服务部署已经完成,下面分享一些让这套系统更好用的进阶技巧。
4.1 常用Docker Compose管理命令
记住这几个命令,你就能轻松管理整个服务集群:
- 启动所有服务:
docker compose up -d - 停止所有服务:
docker compose down - 查看运行状态:
docker compose ps - 查看服务日志(非常有用,用于排错):
- 查看所有服务的日志:
docker compose logs - 查看特定服务(如llama3-2-3b)的日志:
docker compose logs llama3-2-3b - 实时跟踪日志输出(类似
tail -f):docker compose logs -f llama3-2-3b
- 查看所有服务的日志:
- 重启某个服务(比如更新了配置):
docker compose restart llama3-2-3b - 进入某个服务的容器内部:
docker exec -it ollama-llama3.2-3b bash
4.2 模型管理与更新
如何更新Ollama版本? Ollama镜像更新后,只需重新拉取镜像并重启服务:
docker compose pull # 拉取最新的镜像
docker compose up -d --force-recreate # 强制重新创建容器
如何更新已下载的模型? 进入对应容器,重新拉取模型(会获取最新版本):
docker exec -it ollama-llama3.2-3b bash
ollama pull llama3.2:3b # 重新拉取会更新到最新版
exit
如何查看容器内已下载的模型?
docker exec ollama-llama3.2-3b ollama list
4.3 性能优化与资源限制
如果你的服务器资源有限,或者不想让某个模型占用太多资源,可以在 docker-compose.yml 中为服务设置资源限制。
services:
llama3-2-3b:
# ... 其他配置 ...
deploy:
resources:
limits:
cpus: '2.0' # 最多使用2个CPU核心
memory: 4G # 最多使用4GB内存
reservations:
memory: 2G # 保证至少分配2GB内存
devices:
- driver: nvidia
count: 1 # 只使用1块GPU(如果你有多块)
capabilities: [gpu]
这样,即使同时运行多个模型,也能保证系统整体稳定,不会因为某个模型“吃”掉所有资源而卡死。
5. 总结
回顾一下我们今天完成的事情:
- 快速体验:我们用一条命令
ollama run llama3.2:3b就体验了最新的Llama-3.2-3B模型,感受到了开源小模型的便捷与能力。 - 容器化部署:通过Docker,我们将Ollama服务封装成了一个独立、可移植的“集装箱”,解决了环境依赖的烦恼。
- 多服务编排:利用Docker Compose,我们通过一份清晰的
docker-compose.yml配置文件,轻松部署并管理了多个独立的模型服务(Llama-3.2-3B和Llama-3.1-8B),并为它们分配了不同的端口。 - 持久化与资源管理:我们配置了数据卷来永久保存模型文件,并了解了如何设置资源限制和查看日志,让整个系统更健壮、易维护。
这套方案的强大之处在于它的清晰度和可扩展性。你的 docker-compose.yml 文件就是整个AI服务集群的蓝图。未来,如果你想增加一个代码生成模型、一个图像理解模型,或者换用更新的模型版本,只需要在这个文件里添加或修改几行配置,然后运行 docker compose up -d 即可。
从今天起,你可以告别手动管理多个命令行窗口的混乱,拥抱这种声明式、一体化的模型服务管理方式。无论是用于个人学习、项目开发,还是小团队的原型验证,这套方案都能为你提供一个干净、高效且专业的AI基础设施。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)