Ollama免配置运行internlm2-chat-1.8b:含Docker Compose一键启停脚本

想快速体验一个能流畅对话、支持超长文本的AI助手,但又不想折腾复杂的模型部署和环境配置?今天给大家分享一个超简单的方案:用Ollama和Docker Compose,一键启动InternLM2-Chat-1.8B模型。

InternLM2-Chat-1.8B是书生·浦语团队推出的一个18亿参数的对话模型。别看它参数不大,能力可不小,尤其擅长理解和生成超长的文本内容。更重要的是,通过Ollama这个工具,我们可以把它封装成一个随时可用、开箱即聊的服务,整个过程几乎不需要你懂任何深度学习框架的配置。

这篇文章,我就手把手带你,用几行命令,把这个聪明的AI助手“请”到你的电脑上。

1. 准备工作:认识我们的工具和模型

在开始动手之前,我们先花几分钟了解一下今天要用到的核心工具和模型。这能帮你更好地理解每一步在做什么。

1.1 什么是Ollama?

你可以把Ollama想象成一个“AI模型的应用商店”和“运行环境管理器”。它的主要作用是让大语言模型的本地部署变得极其简单。

  • 简化部署:传统部署一个模型,你需要下载模型文件、安装对应的推理框架(如Transformers、vLLM)、处理复杂的依赖和配置。Ollama把这些步骤全部打包,你只需要一条命令 ollama run 模型名,它就会自动完成下载、配置和启动。
  • 统一接口:Ollama为所有通过它运行的模型提供了一个统一的API接口(通常是http://localhost:11434)。这意味着无论你跑的是哪个模型,都可以用同样的方式来调用它,非常方便。
  • 资源友好:它针对在个人电脑(尤其是带GPU的电脑)上运行模型做了优化,能更好地利用你的硬件资源。

简单说,Ollama让运行大模型变得像安装手机App一样简单。

1.2 为什么选择InternLM2-Chat-1.8B?

书生·浦语(InternLM)是国产大模型中的优秀代表。我们这次要部署的InternLM2-Chat-1.8B是它的第二代1.8B参数对话版本。它有几个特别吸引人的特点:

  • “小身材,大能量”:1.8B的参数规模,意味着它对硬件的要求相对友好,在消费级显卡甚至性能不错的CPU上都能跑起来,但它在推理、数学和代码能力上相比前代有显著提升。
  • 超长上下文:这是它的一大亮点。官方称其能有效支持20万字符的超长文本。这意味着你可以给它一篇很长的文章,让它总结;或者进行非常长的多轮对话,它都能较好地记住上下文。这个能力在很多开源模型中是非常突出的。
  • 对话体验优化:这个Chat版本经过了指令微调和对齐优化,在指令遵循、聊天流畅度和功能性上表现更好,非常适合我们用来构建对话应用。

对于想快速体验、学习大模型对话,或者需要处理较长文本任务的个人开发者来说,它是一个非常理想的选择。

1.3 为什么还要用Docker Compose?

Ollama本身已经很简单了,那我们为什么还要引入Docker Compose呢?为了追求“极致简单”和“环境隔离”。

  • 一键启停:通过编写一个docker-compose.yml文件,我们可以把Ollama服务的启动、停止、重启等操作,浓缩成 docker-compose up -ddocker-compose down 两条命令。管理起来非常清晰。
  • 环境封装:Docker容器能把Ollama及其所有依赖打包在一个独立的环境里运行。这避免了和你电脑上已有的其他Python环境、软件发生冲突,真正做到“装完即用,用完即删”,不留任何“垃圾文件”。
  • 配置即代码:所有服务配置(端口、卷挂载等)都写在一个文件里,易于版本管理和分享。你今天在我这看到的完整可运行脚本,复制到你电脑上一样能跑。

接下来,我们就进入实战环节。

2. 实战部署:三步搞定模型服务

假设你的电脑上已经安装了Docker和Docker Compose。如果还没安装,可以去Docker官网根据你的操作系统下载安装,步骤很清晰。

整个部署过程只需要三步:准备脚本、启动服务、测试对话。

2.1 第一步:创建一键部署脚本

在你的工作目录下(比如 ~/projects/ollama-internlm),创建一个名为 docker-compose.yml 的文件。这个文件将定义我们的Ollama服务。

用你喜欢的文本编辑器(如VSCode、Vim、Nano)打开这个文件,把下面的内容复制进去:

version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama_internlm
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama_data:/root/.ollama
    command: serve

我来解释一下这个脚本的每一部分:

  • image: ollama/ollama:latest:指定使用官方最新的Ollama Docker镜像。
  • container_name: ollama_internlm:给容器起个名字,方便管理。
  • restart: unless-stopped:设置容器自动重启策略,除非手动停止,否则意外退出会自动重启,保证服务可用性。
  • ports: - "11434:11434":这是最关键的一步。将容器内部的11434端口映射到你电脑的11434端口。这样,你通过 http://localhost:11434 就能访问到容器里的Ollama服务了。
  • volumes: - ./ollama_data:/root/.ollama:把容器中存放模型文件(/root/.ollama)的目录,挂载到当前目录下的 ollama_data 文件夹。这样,你下载的InternLM2模型文件就保存在本地了,即使删除容器,模型也不用重新下载。
  • command: serve:容器启动后执行的命令,就是启动Ollama服务。

保存这个文件。我们的“一键脚本”就准备好了。

2.2 第二步:启动服务并拉取模型

打开终端(命令行),进入你刚才创建 docker-compose.yml 文件的目录。

1. 启动Ollama服务: 运行以下命令,Docker Compose会在后台拉取Ollama镜像并启动服务。

docker-compose up -d

看到 Creating ollama_internlm ... done 类似的提示,就说明服务启动成功了。

2. 拉取InternLM2-Chat-1.8B模型: 服务启动后,我们需要告诉Ollama去下载我们想要的模型。执行下面的命令:

docker exec ollama_internlm ollama pull internlm2:1.8b

这条命令的意思是:在名为 ollama_internlm 的容器内部,执行 ollama pull internlm2:1.8b 命令。 这个过程需要一些时间,取决于你的网速。它会下载大约几个GB的模型文件。耐心等待,直到出现“success”的提示。

2.3 第三步:与模型对话测试

模型拉取成功后,我们就可以和它聊天了。有两种简单的方式:

方式一:通过容器内命令行直接对话(适合快速测试)

docker exec -it ollama_internlm ollama run internlm2:1.8b

执行后,你会进入一个交互式对话界面,直接输入问题即可,比如:

>>> 请用一句话介绍你自己。

方式二:通过API接口对话(适合集成到其他应用) Ollama提供了标准的HTTP API。我们可以用 curl 命令来测试:

curl http://localhost:11434/api/generate -d '{
  "model": "internlm2:1.8b",
  "prompt": "请用一句话介绍你自己。",
  "stream": false
}'

如果一切正常,你会收到一个JSON格式的回复,其中就包含了模型生成的答案。

至此,你的本地InternLM2-Chat-1.8B对话服务就已经完全跑起来了!

3. 日常使用与管理技巧

服务跑起来之后,你可能会关心怎么管理它、怎么更好地使用它。这里有一些小技巧。

3.1 服务管理命令

记住这几个命令,管理起来非常顺手:

  • 停止服务docker-compose down
    • 这会停止并删除容器,但本地ollama_data目录下的模型文件会保留
  • 重启服务docker-compose restart
  • 查看服务日志docker-compose logs -f ollama
    • 当你遇到问题,或者想看看模型运行的详细过程时,这个命令非常有用。
  • 进入容器内部docker exec -it ollama_internlm /bin/bash
    • 如果你想探索容器内部的文件结构,或者执行一些更复杂的操作,可以用这个命令。

3.2 模型使用建议

为了让InternLM2-Chat-1.8B发挥更好的效果,你可以试试这些方法:

  • 清晰的指令:在提问时,尽量把问题描述得具体、清晰。比如,与其问“写一篇作文”,不如问“请以‘人工智能的未来’为题,写一篇300字左右的议论文,要求观点明确,逻辑清晰”。
  • 利用长上下文优势:这是该模型的强项。你可以先给它“喂”一大段背景材料(比如一篇技术文档、一段会议记录),然后让它基于这个材料进行总结、问答或扩写。
  • 系统提示词:通过API调用时,你可以设置 system 角色来给模型一个身份设定,这能显著影响它的回答风格。例如:
    curl http://localhost:11434/api/chat -d '{
      "model": "internlm2:1.8b",
      "messages": [
        {"role": "system", "content": "你是一个严谨的科技专栏作家,擅长用通俗易懂的语言解释复杂概念。"},
        {"role": "user", "content": "请解释一下什么是Transformer架构。"}
      ],
      "stream": false
    }'
    

3.3 性能与资源观察

模型运行时会占用计算资源。你可以用以下命令观察:

  • docker stats ollama_internlm:实时查看容器的CPU、内存使用情况。
  • 如果你的电脑有NVIDIA显卡并且安装了NVIDIA Docker运行时,可以在 docker-compose.yml 中为 ollama 服务添加 deploy.resources.reservations.devices 配置,让Ollama使用GPU加速,速度会快很多。具体配置可以参考Ollama官方文档。

4. 总结

我们来回顾一下今天完成的事情。我们利用Ollama和Docker Compose,几乎零配置地在本地部署了InternLM2-Chat-1.8B大语言模型。整个过程的核心就是一个简单的 docker-compose.yml 文件,以及几条直观的命令。

这种方法最大的好处就是省心干净。你不需要关心Python环境、PyTorch版本、CUDA驱动这些令人头疼的依赖问题。所有东西都被封装在Docker容器里,想用的时候一键启动,不用的时候一键清理,模型文件还能保留在本地。

InternLM2-Chat-1.8B作为一个在长文本处理上表现突出的轻量级模型,非常适合用于个人学习、原型开发,或者处理一些需要长上下文理解的自动化任务。现在,你已经拥有了一个本地运行的、私密的AI对话伙伴,可以尽情探索它的能力了。

下次当你需要快速验证一个与大模型相关的想法,或者只是想和一个AI聊聊天时,不妨启动这个服务试试。


获取更多AI镜像

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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐