【书生·浦语】internlm2-chat-1.8b部署教程:Docker Compose编排最佳实践
想快速体验一个功能强大、响应迅速的开源对话模型吗?今天,我们就来手把手教你如何用最简单、最专业的方式,部署书生·浦语最新推出的轻量级对话模型——InternLM2-Chat-1.8B。
这个模型虽然只有18亿参数,但它在指令遵循、聊天体验和长文本处理上表现非常出色,特别适合个人开发者、研究者或者想快速搭建AI助手的团队。我们将使用Docker Compose进行编排,这是一种比传统手动部署更优雅、更易于维护的方式。跟着这篇教程,你可以在10分钟内完成从零到一的部署,并开始与你的AI助手对话。
1. 准备工作与环境检查
在开始部署之前,我们需要确保你的电脑环境已经准备就绪。整个过程非常简单,只需要几个基础的软件。
1.1 你需要什么
首先,我们来检查一下你的电脑是否满足基本要求:
- 操作系统:推荐使用Linux(如Ubuntu 20.04/22.04)或macOS。Windows用户可以通过WSL2(Windows Subsystem for Linux)获得几乎相同的体验。
- Docker:这是容器化部署的核心。我们需要Docker Engine的版本在20.10以上。
- Docker Compose:这是今天的主角,用于定义和运行多容器的Docker应用。我们需要版本2.x。
- 硬件资源:这是最关键的部分。InternLM2-Chat-1.8B是一个轻量模型,对资源要求很友好:
- CPU:4核以上即可流畅运行。
- 内存(RAM):至少需要8GB。为了保证良好的体验,建议分配12GB或更多。
- 硬盘空间:模型文件本身大约4GB,加上系统和Docker的开销,建议预留10GB以上的空闲空间。
- GPU(可选但推荐):虽然模型可以在纯CPU上运行,但速度会慢很多。如果你有一张支持CUDA的NVIDIA显卡(如GTX 1060 6G或更高),体验会好得多。我们将配置同时支持CPU和GPU的选项。
1.2 快速检查你的环境
打开你的终端(在Windows上是WSL2终端或PowerShell),输入以下命令来检查Docker和Docker Compose是否已经安装,以及它们的版本:
# 检查Docker版本 docker --version # 检查Docker Compose版本 docker compose version如果这两条命令都成功输出版本信息(例如Docker version 24.0.7和Docker Compose version v2.23.0),那么恭喜你,环境已经就绪。如果提示“命令未找到”,则需要先安装它们。
安装提示:
- 在Ubuntu上安装:可以通过官方的Docker仓库安装,这是最推荐的方式。
- 在macOS上安装:最简单的方法是下载并安装 Docker Desktop for Mac,它包含了Docker Engine和Docker Compose。
- 在Windows上安装:同样,安装 Docker Desktop for Windows 并确保启用WSL2后端。
2. 核心部署:编写Docker Compose文件
传统部署可能需要你记住一长串复杂的docker run命令和参数。而Docker Compose的魅力在于,你只需要在一个清晰易懂的配置文件中定义一切,然后一个命令就能启动整个服务。这就像为你的应用写了一份“食谱”。
2.1 创建项目目录
首先,我们创建一个干净的工作目录,所有文件都会放在这里,便于管理。
# 创建一个名为 internlm2-chat 的目录并进入 mkdir -p internlm2-chat && cd internlm2-chat2.2 编写docker-compose.yml文件
这是整个部署的核心配置文件。我们将使用一个文本编辑器来创建它。你可以使用vim、nano或者任何你喜欢的编辑器。
# 使用nano编辑器创建文件(如果没安装,用vim或vi也可以) nano docker-compose.yml然后,将以下内容复制并粘贴到编辑器中。我会逐段解释关键部分。
version: '3.8' services: # 我们定义了一个名为 ollama 的服务 ollama: # 使用官方Ollama镜像,它已经集成了模型运行环境 image: ollama/ollama:latest # 为容器起一个容易识别的名字 container_name: internlm2-ollama # 设置容器重启策略为“总是”,确保服务意外停止后能自动恢复 restart: unless-stopped # 将容器内的模型存储目录映射到宿主机的当前目录下,这样模型数据不会丢失 volumes: - ./ollama_data:/root/.ollama # 映射端口:将容器内部的11434端口映射到宿主机的11434端口 ports: - "11434:11434" # 设置环境变量,保持终端日志可读 environment: - OLLAMA_HOST=0.0.0.0 - OLLAMA_KEEP_ALIVE=24h # 如果你有NVIDIA GPU并希望使用它,取消下面这4行的注释 # deploy: # resources: # reservations: # devices: # - driver: nvidia # count: all # capabilities: [gpu]配置文件关键点解读:
volumes: - ./ollama_data:/root/.ollama:这一行至关重要。它把容器里存放模型文件的文件夹(/root/.ollama),“挂载”到了你当前目录下的ollama_data文件夹。这意味着:- 你下载的模型(大约4GB)会保存在你的硬盘上,而不是在容器内部。
- 即使你删除了容器,模型文件依然在,下次启动时无需重新下载。
- 你可以方便地备份这个
ollama_data文件夹。
ports: - "11434:11434":Ollama服务默认在11434端口提供API。我们把这个端口“暴露”出来,这样你就能从电脑上的浏览器或其他程序访问它了。- GPU支持部分(注释状态):如果你有NVIDIA显卡并且已经安装了正确的驱动和
nvidia-container-toolkit,你可以删除deploy:及其下面几行开头的#号来启用GPU加速。这会让模型推理速度大幅提升。如果暂时没有GPU或不确定,就保持注释状态,模型会在CPU上运行。
保存并退出编辑器(在nano中是按Ctrl+X,然后按Y确认,再按Enter)。
3. 启动服务与拉取模型
配置文件写好了,现在只需要几个简单的命令,服务就会自动运行起来。
3.1 启动Ollama服务
在你的项目目录(internlm2-chat)下,运行以下命令:
# 在后台启动服务 docker compose up -d你会看到类似这样的输出,表示Docker正在拉取Ollama镜像并启动容器:
[+] Running 2/2 ✔ Network internlm2-chat_default Created ✔ Container internlm2-ollama Started这个-d参数代表“detached”(分离模式),意思是让服务在后台运行,不会占用你的终端窗口。
3.2 拉取InternLM2-Chat-1.8B模型
服务启动后,容器内部已经运行了一个Ollama服务,但它还没有我们想要的模型。我们需要告诉它去下载internlm2:1.8b这个模型。
执行以下命令:
# 让Ollama服务拉取指定的模型 docker compose exec ollama ollama pull internlm2:1.8b这个命令会进入正在运行的ollama容器,并执行ollama pull命令。你会看到下载进度条,模型大小约为4GB,下载速度取决于你的网络。
小提示:如果你在中国大陆,下载速度可能较慢。你可以考虑配置镜像加速源,或者耐心等待一会儿。
3.3 验证服务与模型
模型下载完成后,如何确认一切正常呢?
方法一:查看容器日志
docker compose logs ollama如果看到模型加载完成的相关日志,没有报错,就说明成功了。
方法二:直接向API提问(最直接的测试)我们可以用最简单的curl命令来测试模型是否能够响应。
# 向本地的Ollama API发送一个简单的对话请求 curl http://localhost:11434/api/generate -d '{ "model": "internlm2:1.8b", "prompt": "你好,请介绍一下你自己。", "stream": false }'如果一切正常,你会收到一个JSON格式的回复,其中"response"字段里就是模型生成的自我介绍文本了。
4. 开始使用你的AI助手
服务跑起来了,模型也加载好了,现在该怎么用呢?你有好几种选择,从命令行到图形界面都可以。
4.1 通过命令行直接对话
你可以继续使用curl,但更交互式的方法是使用Ollama自带的命令行工具。我们需要在容器内执行它:
# 进入容器的交互式命令行,并运行ollama的对话命令 docker compose exec -it ollama ollama run internlm2:1.8b执行后,你会进入一个对话界面,提示符可能显示>>>。你可以直接输入问题,比如:
>>> 你能帮我写一个Python函数来计算斐波那契数列吗?模型会逐字输出它的回答。输入/bye可以退出对话。
4.2 使用Web UI(推荐,更直观)
命令行虽然酷,但有个网页界面会更方便。Ollama社区有一个非常流行的开源Web UI叫Open WebUI(原名Ollama WebUI)。我们可以用Docker Compose轻松地把它也集成进来。
编辑我们之前的docker-compose.yml文件,在services:部分添加一个新的服务:
open-webui: image: ghcr.io/open-webui/open-webui:main container_name: internlm2-webui restart: unless-stopped ports: - "3000:8080" # 将WebUI的8080端口映射到宿主机的3000端口 volumes: - ./webui_data:/app/backend/data # 持久化WebUI的数据(用户、对话记录等) depends_on: - ollama # 确保先启动ollama服务 environment: - OLLAMA_BASE_URL=http://ollama:11434 # 告诉WebUI后端Ollama服务在哪里保存文件后,运行以下命令来启动WebUI:
docker compose up -d open-webui现在,打开你的浏览器,访问http://localhost:3000。
- 首次访问需要注册一个账号。
- 登录后,在设置里确保模型连接地址是
http://ollama:11434(通常已自动设置好)。 - 然后你就可以在清爽的网页界面中选择
internlm2:1.8b模型,开始畅快地对话了!你可以创建不同的对话线程,界面比命令行友好得多。
4.3 集成到其他应用
Ollama提供了标准的API,这意味着你可以用任何编程语言(Python, JavaScript, Go等)来调用你的模型。API地址就是http://localhost:11434。
一个简单的Python调用示例:
import requests import json def ask_ollama(prompt): url = "http://localhost:11434/api/generate" data = { "model": "internlm2:1.8b", "prompt": prompt, "stream": False } response = requests.post(url, json=data) return response.json()["response"] # 测试一下 answer = ask_ollama("用一句话解释什么是人工智能。") print(answer)5. 日常管理与维护
部署好了,日常使用中你可能会遇到这些问题,这里给你一些建议。
5.1 常用Docker Compose命令
记住这几个命令,管理你的服务就非常轻松:
# 查看所有服务的运行状态 docker compose ps # 查看Ollama服务的实时日志(类似tail -f) docker compose logs -f ollama # 停止所有服务 docker compose down # 停止服务并删除所有相关的容器、网络(不会删除volumes里的模型数据!) docker compose down -v # 注意:上面的 `-v` 会删除名为 `ollama_data` 的卷,如果你用了本地目录映射(./ollama_data),则不会删除你的模型文件,这是安全的。 # 重启所有服务 docker compose restart # 更新Ollama到最新镜像并重启(如果镜像有更新) docker compose pull ollama && docker compose up -d ollama5.2 模型文件在哪里?如何备份?
根据我们的配置,所有模型文件都安全地存储在你项目目录下的ollama_data文件夹里。你可以随时复制或备份这个文件夹。
重要提醒:如果你需要迁移到另一台机器,只需要:
- 在新机器上安装好Docker和Docker Compose。
- 将整个
internlm2-chat项目目录(包含docker-compose.yml和ollama_data)拷贝过去。 - 在新机器的项目目录下,运行
docker compose up -d。 服务就会带着你所有的模型和数据启动,无需重新下载。
5.3 如何尝试其他模型?
Ollama支持非常多优秀的开源模型。如果你想试试别的,比如llama3.2:1b或qwen2.5:0.5b,只需要:
# 拉取新模型 docker compose exec ollama ollama pull llama3.2:1b # 然后在WebUI中选择新模型,或者用run命令指定 docker compose exec -it ollama ollama run llama3.2:1b你的ollama_data目录会容纳所有你拉取过的模型。
6. 总结
通过这篇教程,我们完成了一件很酷的事:用业界标准的容器化编排工具Docker Compose,优雅地部署了一个功能强大的开源对话模型。我们来回顾一下关键收获:
- 部署变得简单:一个
docker-compose.yml文件定义了一切,docker compose up -d一键启动。告别了记忆复杂命令和手动配置环境变量的烦恼。 - 数据持久化:通过卷映射(
volumes),我们将宝贵的模型数据保存在了宿主机上,确保了数据安全,也方便了迁移和备份。 - 扩展性强:我们轻松地集成了Open WebUI,获得了图形化操作界面。这种基于服务的架构,让你未来添加数据库、监控工具或其他微服务变得非常容易。
- 资源友好:InternLM2-Chat-1.8B模型在轻量化的同时保持了出色的能力,对个人电脑和服务器都非常友好,是入门和快速原型开发的绝佳选择。
- 维护便捷:Docker Compose提供了一套完整的命令集,用于管理服务的生命周期(启动、停止、重启、查看日志),让日常运维工作井井有条。
现在,你的本地AI助手已经就绪。无论是用于学习、创意写作、代码辅助还是简单的日常问答,它都是一个唾手可得的强大工具。快去探索InternLM2-Chat-1.8B在长文本理解、指令遵循等方面的能力吧,祝你玩得开心!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。