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上安装:

  1. 前往Ollama官网(https://ollama.com)下载Windows安装程序(.exe文件)。
  2. 双击运行安装程序,按照提示完成安装。
  3. 安装完成后,你可以在开始菜单找到“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还自带一个轻量级的网页界面,用起来更直观。

  1. 首先,确保Ollama服务正在运行(如果刚刚退出了,需要重新运行 ollama run llama3.2:3b,或者用 ollama serve 命令在后台启动服务)。
  2. 打开你的浏览器,访问:http://localhost:11434
  3. 你会看到一个非常简洁的页面,这就是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 --versiondocker 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 # 为所有服务创建一个共同的网络,方便内部通信

让我们拆解一下这个配置文件的关键部分:

  1. 定义服务:在 services: 下面,我们定义了两个服务 llama3-2-3bllama3-1-8b。每个服务对应一个独立的Docker容器。
  2. 使用镜像image: ollama/ollama:latest 指定了容器使用官方最新的Ollama镜像。
  3. 容器命名container_name 给容器起个有意义的名字,方便管理。
  4. 端口映射ports: - "11435:11434" 这是最关键的一步。它把容器内部的Ollama服务端口(默认11434)映射到了你电脑(宿主机)的11435端口。这样,你访问 localhost:11435 就是在访问第一个容器里的Ollama。第二个服务映射到了11436端口,以此类推,避免了端口冲突。
  5. 数据持久化volumes: - ./ollama-data/llama3.2-3b:/root/.ollama 把容器内存储模型文件的目录挂载到宿主机的 ./ollama-data/llama3.2-3b 文件夹。这样即使删除了容器,下载好的模型也不会丢失。
  6. 启动命令command: serve 告诉容器启动后运行 ollama serve 命令来启动Ollama服务。
  7. GPU支持deploy: 部分是可选的。如果你的电脑有NVIDIA显卡并且安装了正确的Docker GPU运行时(nvidia-container-toolkit),这个配置可以让容器使用GPU来加速模型推理,速度会快很多。
  8. 自动拉取模型:注释掉的 entrypointcommand 部分展示了一种在容器启动后自动下载模型的方法。第一次启动时,你可能需要进入容器手动拉取,或者取消注释这段代码。

3.3 启动多模型服务集群

配置文件写好了,现在让我们启动这个“模型舰队”。

  1. 打开终端,进入到存放 docker-compose.yml 文件的目录(~/projects/ollama-multi)。
  2. 运行以下命令:
    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. 总结

回顾一下我们今天完成的事情:

  1. 快速体验:我们用一条命令 ollama run llama3.2:3b 就体验了最新的Llama-3.2-3B模型,感受到了开源小模型的便捷与能力。
  2. 容器化部署:通过Docker,我们将Ollama服务封装成了一个独立、可移植的“集装箱”,解决了环境依赖的烦恼。
  3. 多服务编排:利用Docker Compose,我们通过一份清晰的 docker-compose.yml 配置文件,轻松部署并管理了多个独立的模型服务(Llama-3.2-3B和Llama-3.1-8B),并为它们分配了不同的端口。
  4. 持久化与资源管理:我们配置了数据卷来永久保存模型文件,并了解了如何设置资源限制和查看日志,让整个系统更健壮、易维护。

这套方案的强大之处在于它的清晰度和可扩展性。你的 docker-compose.yml 文件就是整个AI服务集群的蓝图。未来,如果你想增加一个代码生成模型、一个图像理解模型,或者换用更新的模型版本,只需要在这个文件里添加或修改几行配置,然后运行 docker compose up -d 即可。

从今天起,你可以告别手动管理多个命令行窗口的混乱,拥抱这种声明式、一体化的模型服务管理方式。无论是用于个人学习、项目开发,还是小团队的原型验证,这套方案都能为你提供一个干净、高效且专业的AI基础设施。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐