【大模型实战篇】在多GPU服务器上部署Qwen3.5本地模型服务并接入Claude Code

【大模型实战篇】在多GPU服务器上部署Qwen3.5本地模型服务并接入Claude CodeClaude Code 是 Anthropic 推出的 AI 编程助手 默认需要使用 Anthropic 官方 API 但它支持通过 ANTHROPIC BASE URL 环境变量切换后端服务 所以我们可以用本地部署的开源大模型替代官方 API 实现零成本 数据不出内网的编程助手方案 这里我记录一下在一台 8 卡 RTX 4090

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



Claude Code 是 Anthropic 推出的 AI 编程助手,默认需要使用 Anthropic 官方 API。但它支持通过 ANTHROPIC_BASE_URL 环境变量切换后端服务,所以我们可以用本地部署的开源大模型替代官方 API,实现零成本、数据不出内网的编程助手方案。

这里我记录一下在一台 8卡 RTX 4090 服务器上,利用空闲 GPU 部署 Qwen3.5-35B-A3B 模型,并让本机和内网其他服务器的 Claude Code 都接入该模型服务的完整过程。

项目配置GPU8x NVIDIA GeForce RTX 4090 (24GB)空闲卡GPU 4、GPU 5CUDA12.4系统Ubuntu 22.04, Linux 5.15内存505 GBNode.jsv22.22.1Python3.13.5

核心思路:用 llama.cpp 在本地起一个兼容 OpenAI API 的模型服务,Claude Code 所有请求都走这个本地服务,完全不依赖 Anthropic 官方 API。

拿到服务器后先做环境检查,我们遇到了三个实际问题:

问题1:根盘磁盘满了

根盘只剩 4.2GB,而模型文件就有 21GB。好在服务器挂了块 3.5TB 数据盘:

/dev/sxx1       3.5T   25G   3.5T   1% /mnt/sxx1

解决方案:所有文件(llama.cpp 编译、模型存储)都放到 /mnt/sxx1。

问题2:目标端口被占用

$ ss -tlnp | grep 8001

LISTEN 0 4096 0.0.0.0:8001 0.0.0.0:* users:(("docker-proxy"...))

8001 端口被占用。改用 8002 端口。

问题3:其他 GPU 正在跑服务

8 张卡中 6 张都有任务在跑(显存占用 83%-93%),只有 GPU 4 和 5 完全空闲。

解决方案:使用 CUDA_VISIBLE_DEVICES=4,5 严格隔离,确保不影响其他服务。

cd /mnt/sdb1

踩坑:cuBLAS 缺失

cmake 配置时报了一堆错:

Target "ggml-cuda" links to target "CUDA::cublas" but the target was not found.

原因是服务器只装了 CUDA toolkit 的最小集(nvcc + cudart),没装 cuBLAS 数学库。

装好后重新 cmake 配置即可通过。

使用 ModelScope(国内源,速度快)下载 Unsloth 量化的 Qwen3.5-35B-A3B:

pip install modelscope

Qwen3.5-35B-A3B 是 MoE 架构(Mixture of Experts),总参数 35B 但每次推理只激活 3B,推理速度非常快。UD-Q4_K_XL 是 Unsloth Dynamic 2.0 量化方案,重要层自动提升到 8-bit 或 16-bit,在体积和精度之间取得**平衡。

下载结果:

tmux new -s llama

关键参数说明:

参数作用CUDA_VISIBLE_DEVICES=4,5只使用 GPU 4 和 5,不影响其他卡--host 0.0.0.0允许内网其他机器连接--api-key接口鉴权,防止未授权访问--n-gpu-layers 99所有层都放到 GPU 上--tensor-split 0.5,0.5两张卡平均分配模型权重--ctx-size K 上下文,编码场景够用--flash-attn on开启 Flash Attention 加速--cache-type-k q8_0 --cache-type-v q8_0KV Cache 用 8-bit 量化节省显存--chat-template-kwargs '{"enable_thinking": false}'关闭思考模式,提升编码速度

启动后的资源占用:

推理性能:

npm install -g @anthropic-ai/claude-code

这个配置非常关键,不加的话 Claude Code 新版本默认的归属头会导致 KV 缓存失效,推理速度直接砍半:

llama-server 原生兼容 OpenAI API 格式,除了 Claude Code 之外,任何支持 OpenAI API 的工具都可以直接接入:

from openai import OpenAI

问题原因解决方案cmake 报 CUDA::cublas not foundCUDA toolkit 安装不完整,缺少 cuBLASapt-get install libcublas-dev-12-4根盘空间不足模型 21GB 放不下使用独立数据盘 /mnt/sxx1端口 8001 被占Docker 容器占用改用 8002 端口GitHub 下载极慢服务器到 GitHub 网络差本地下 zip 上传,或用 gitee 镜像Claude Code 推理速度慢归属头导致 KV 缓存失效settings.json 中设置 CLAUDE_CODE_ATTRIBUTION_HEADER: "0"推理出现乱码KV Cache 量化兼容问题将 --cache-type-k q8_0 换为 bf16

ctx-sizeKV Cache 占用(估算)双卡总占用是否可行32768~5 GB~28 GB轻松(推荐起步值)65536~10 GB~33 GB可以~20 GB~43 GB偏紧,需要测试

整套方案的核心就一句话:llama.cpp 起服务,Claude Code 改地址。实际部署中大部分时间花在处理环境问题上(磁盘、端口、CUDA 库缺失)。

这套方案适合:

  • 内网环境处理敏感代码,数据不出机房
  • 节省 API 费用,模型跑在自己的 GPU 上
  • 多人共享同一个模型服务(通过 API Key 控制访问)

局限性:

  • Qwen3.5 的编码能力和 Claude 原版仍有差距
  • Claude Code 的部分工具功能可能不完全兼容
  • 需要维护 GPU 服务器和模型服务的稳定性

【1】

【2】

【3】

小讯
上一篇 2026-03-19 11:50
下一篇 2026-03-19 11:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/241494.html