在 4GB 显存下运行 LLM 基础开发环境

有 nvidia 4GB 显存的设备,就可以搭建一个用于 LLM 的基本开发环境。

比如这里使用的是 NVIDIA GeForce GTX 1650, 4GB 显存。

基本思路

  • 消耗显存主要是
    • LLM,大语言模型,如果使用 Qwen2:1.5b,大约消耗 2GB,如果是 Qwen2:0.5b,则更小
    • embedding,嵌入模型,bge-large-zh-v1.5@f16, 大约消耗 1.2GB
  • 基础开发环境用于测试程序是否能跑通,因此可以先用本地小模型
  • 如果需要更大的模型,可以再使用云端模型
  • 切换本地模型和云端模型很容易,因为使用 one-api 统一了本地和云端模型的调用接口
  • 调用模型调试代码,采用 JupyterLab 笔记
    • 这样调试很方便,也便于分享
    • 如果使用客户端方案,比如 Streamlit 或者 Gradio
      • 过程复杂了,没有专注在模型相关,可能涉及很多客户端细节
      • 团队可能有专门的前端,会有他们的基于 Vue 或者 React 解决方案
    • 将来很容易将笔记代码移植到比如 FastAPI 的服务器端模块

实现技术

  • 使用 docker 容器方式运行,通过 compose 管理 docker 容器
  • 使用 Ollama 加载本地模型
  • 使用 one-api 统一管理本地和云端模型,并提供统一的 OpenAI API 访问方式
  • 使用 JupyterLab 提供 Web 界面的开发编辑工具

使用效果展示

操作步骤

基础环境

  • Linux 环境,已经正确安装了 nvidia driver,并安装了 docker 和 compose
  • Windws 环境,WSL2 的 Linux 虚拟机,安装了 docker 和 compose

下载源代码

bash 复制代码
git clone https://github.com/MarshalW/llm-proto.git

docker 设置代理

如果能直接访问 docker 官方 registry,则不需要这一步。

下面脚本为 docker 设置代理服务器。

bash 复制代码
# 代理配置
HTTP_PROXY="http://proxy.example.com:8080"
NO_PROXY="localhost,127.0.0.1,docker-registry.example.com,.corp"

# 配置文件路径
CONFIG_FILE="/etc/systemd/system/docker.service.d/http-proxy.conf"

# 创建目录(如果不存在)
mkdir -p "$(dirname "$CONFIG_FILE")"

# 写入配置文件
cat <<EOF | sudo tee "$CONFIG_FILE" > /dev/null
[Service]
Environment="HTTP_PROXY=$HTTP_PROXY"
Environment="HTTPS_PROXY=$HTTP_PROXY"
Environment="NO_PROXY=$NO_PROXY"
EOF

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 重启 Docker 服务
sudo systemctl restart docker

构建 JupyterLab docker 镜像

bash 复制代码
cd llm-proto/jupyterlab
./build.sh

启动服务

bash 复制代码
cd llm-proto
docker compose up -d

配置服务

Ollama 加载模型

bash 复制代码
# 进入 ollama 容器
docker exec -it llms bash

# 拉取模型
ollama pull qwen2:1.5b

# 验证拉取成功
ollama ls
NAME            ID              SIZE    MODIFIED
qwen2:1.5b      f6daf2b25194    934 MB  5 hours ago

配置 one-api

访问: http://IP:4000

登录账号/密码: root/123456

配置本地模型

添加渠道
测试渠道
添加令牌
复制令牌备用

配置云端模型

智谱 GLM 为例

创建渠道(需要设置访问密钥):

访问 jupyterlab

浏览器访问 http://IP:8888

密码是 password

编写笔记,参考 MarshalW/jupyterlab-demos/blob/main/simple-oneapi.ipynb

总结

通过上述步骤,即可建立一个最基本的 LLM 技术开发环境,用于调试基于模型的基础代码。

相关推荐
AI-智能14 小时前
别啃文档了!3 分钟带小白跑完 Dify 全链路:从 0 到第一个 AI 工作流
人工智能·python·自然语言处理·llm·embedding·agent·rag
大模型教程16 小时前
AI基础入门(应用开发篇)——LangChain:核心抽象
langchain·llm·agent
大模型教程16 小时前
LangChain 入门①:什么是 LangChain?LLM 应用开发的 “好帮手”
langchain·llm·agent
AI大模型16 小时前
当大模型遇上垂直领域:微调如何让 AI 从 “什么都会” 到 “样样精通”?
程序员·llm·agent
AI大模型16 小时前
被 LangChain 全家桶搞晕了?LangGraph、LangSmith、LangFlow 一文读懂
langchain·llm·agent
烟袅18 小时前
5 分钟把 Coze 智能体嵌入网页:原生 JS + Vite 极简方案
前端·javascript·llm
智泊AI20 小时前
API是什么?为什么需要API?如何调用API(Python示例)
llm
mwq301232 天前
Anthropic 机械可解释性学习路线
llm
AI-智能2 天前
RAG 系统架构设计模式介绍
人工智能·langchain·llm·agent·知识库·rag·大模型应用
智泊AI2 天前
模型蒸馏的核心是什么?蒸馏过程是怎样的?为什么要做模型蒸馏?
llm