AutoGLM多卡部署与体验
2025年12月1日字节推出了豆包手机助手技术预览版,让我们看到了AI与移动设备深度融合,但是接连遭到各个大厂APP的封禁政策,就在前两天智谱的AutoGLM则以开源的形式让每台手机都能成为豆包手机!
AutoGLM的意义不仅在于技术突破,更在于它打开了一扇通往"AI助手"真正落地的大门。当AI能够理解你的需求,自动完成手机上的复杂操作——搜索信息、购物比价、甚至处理多应用协同任务,这将彻底改变我们与智能设备的交互方式。
大厂在慌什么呢?无非就是时代真的要大变天了,APP的首页流量入口不重要了。你可以封锁豆包手机,但是你不能封锁"开源"的力量。历史总是惊人的相似——还记得2001年,微软前CEO史蒂夫·鲍尔默将Linux称为"癌症",认为开源会破坏知识产权体系;微软曾通过专利诉讼、FUD策略试图打压Linux的发展。然而时间来到2018年,微软却以75亿美元收购了全球最大的开源平台GitHub;2019年,Windows Subsystem for Linux (WSL)成为Windows的核心功能;如今的微软Azure云平台上,超过60%的虚拟机运行的是Linux系统。微软用20年时间证明了一个道理:与其对抗开源浪潮,不如拥抱它、参与它、引领它。
今天的移动互联网巨头们,又站在了当年微软的十字路口。我相信封禁只能延缓,却无法阻止技术进步的洪流。
AutoGLM核心逻辑
从技术层面来看,AutoGLM基于多模态视觉语言模型,能够:
- 视觉理解:通过屏幕截图理解当前界面状态
- 任务规划:将自然语言需求分解为可执行的操作步骤
- 精准执行:通过坐标定位完成点击、输入等交互动作
- 持续学习:根据执行反馈不断调整策略
这次开源标志着我们正在从"被动使用手机"迈向"AI代理使用手机"的新时代。我将详细介绍如何在8卡A100环境下部署AutoGLM-Phone-9B模型,并展示其在实际场景中的表现。
部署环境配置
本次部署基于 A100 * 8 卡服务器环境:
- Driver Version: 535.247.01
- CUDA Version: 12.2
1. NVIDIA 驱动安装
1.1 查看可用驱动
ubuntu-drivers devices

1.2 安装 NVIDIA 驱动
sudo apt install nvidia-driver-535-server

1.3 安装 Fabric Manager
重要:多卡环境需要安装 nvidia-fabricmanager 来支持多卡 NVLink 通信。
DRIVER=535.247.01
MAJOR=${DRIVER%%.*}
wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/nvidia-fabricmanager-${MAJOR}_${DRIVER}-1_amd64.deb
sudo dpkg -i nvidia-fabricmanager-${MAJOR}_${DRIVER}-1_amd64.deb
1.4 启动 Fabric Manager 服务
sudo systemctl enable nvidia-fabricmanager
sudo systemctl start nvidia-fabricmanager
sudo systemctl status nvidia-fabricmanager

1.5 验证 NVSwitch 连接
nvidia-smi topo -m
能看到 GPU 之间出现 NVLink/XGMII 即表示 Fabric Manager 正常工作。

2. 配置 NVIDIA 容器工具
2.1 添加 NVIDIA 容器库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2.2 安装容器工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
2.3 配置 Docker Runtime
# 生成配置文件
sudo nvidia-ctk runtime configure --runtime=docker
# 重启 Docker 服务
sudo systemctl restart docker
2.4 验证配置
cat /etc/docker/daemon.json

3. 模型部署
3.1 拉取 VLLM 镜像
docker pull vllm/vllm-openai:v0.12.0
3.2 下载 AutoGLM 模型
# 安装 ModelScope 下载工具
pip install modelscope
# 创建目录并下载模型
mkdir -p /opt/model
modelscope download --model 'ZhipuAI/AutoGLM-Phone-9B' --local_dir '/home/algorithm/PycharmProjects/vllm/models/AutoGLM'
3.3 启动 VLLM 容器
docker run -it \
--entrypoint /bin/bash \
--gpus all \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-p 8800:8000 \
--ipc=host \
-v /home/algorithm/PycharmProjects/vllm/models/AutoGLM:/app/model \
--name autoglm \
vllm/vllm-openai:v0.12.0
3.4 验证 GPU 可用性
在容器内执行:
python3 -c "import torch, pprint; print(torch.cuda.is_available(), torch.cuda.device_count())"
# 输出: True 8

3.5 启动 VLLM 服务
以下命令启动 8 卡并行推理服务(tensor-parallel-size 8):
python3 -m vllm.entrypoints.openai.api_server \
--served-model-name autoglm-phone-9b \
--allowed-local-media-path / \
--mm-encoder-tp-mode data \
--mm_processor_cache_type shm \
--mm_processor_kwargs "{\"max_pixels\":5000000}" \
--max-model-len 25480 \
--tensor-parallel-size 8 \
--chat-template-content-format string \
--limit-mm-per-prompt "{\"image\":10}" \
--model /app/model \
--port 8000
注意:如果需要短时间的长期运行,建议使用 nohup 启动。
3.6 服务测试
python scripts/check_deployment_cn.py --base-url http://10.85.36.11:8800/v1 --model "autoglm-phone-9b"
测试结果:

4. 常见问题处理
4.1 共享内存段残留问题
问题描述:上一次启动异常退出,共享内存段 /VLLM_OBJECT_STORAGE_SHM_BUFFER 没释放,导致新的 SHM RingBuffer 无法创建,抛出 FileExistsError: [Errno 17] File exists(vLLM 0.12.0 已知问题)。
解决方案:清理残留段即可,无需改代码、降版本或重装。
# 列出所有 vllm 残留的共享内存段
ls -l /dev/shm/ | grep VLLM
# 删除残留段(*号保险写法,避免误删)
sudo rm -f /dev/shm/VLLM_*
# 如果系统装了 ipcs 也可以使用
ipcs -m | grep $USER | awk '{print $2}' | xargs -I{} ipcrm -m {}
替代方案:改用 --mm_processor_cache_type dummy(纯内存,无 SHM),但会牺牲一点多进程间共享效率。

5. 手机端配置
5.1 安装 ADB Keyboard
手机端需要下载并安装 ADB Keyboard APK,并将默认输入法切换为 ADB Keyboard。
下载地址: ADBKeyboard.apk
6. 实际体验演示
6.1 任务执行示例
演示视频:
python main.py \
--device-id HU9L4DDEYHFMIFQG \
--base-url http://10.85.36.11:8800/v1 \
--model "autoglm-phone-9b" \
"帮我在小红书搜索许嵩的官方账号,并且关注他"
6.2 完整执行日志
以下是一个完整的任务执行过程,任务为"帮我在小红书搜索许嵩的官方账号,并且关注他":
(.venv) (base) zouchanglin@zouchanglins-MacBook-Pro Open-AutoGLM % ./app_agent_run.sh
🔍 Checking system requirements...
--------------------------------------------------
1. Checking ADB installation... ✅ OK (Android Debug Bridge version 1.0.41)
2. Checking connected devices... ✅ OK (1 device(s): HU9L4DDEYHFMIFQG)
3. Checking ADB Keyboard... ✅ OK
--------------------------------------------------
✅ All system checks passed!
🔍 Checking model API...
--------------------------------------------------
1. Checking API connectivity (http://10.85.36.11:8800/v1)... ✅ OK
--------------------------------------------------
✅ Model API checks passed!
==================================================
Phone Agent - AI-powered phone automation
==================================================
Model: autoglm-phone-9b
Base URL: http://10.85.36.11:8800/v1
Max Steps: 100
Language: cn
Device: HU9L4DDEYHFMIFQG
==================================================
Task: 帮我在小红书搜索许嵩的官方账号,并且关注他
==================================================
💭 思考过程:
--------------------------------------------------
用户想要在小红书搜索许嵩的官方账号并关注他。我需要:
1. 打开小红书应用
2. 在小红书中搜索"许嵩"
3. 找到他的官方账号
4. 点击关注
首先,我需要启动小红书应用。从截图中可以看到小红书的图标在屏幕上,位置大约在(314, 145)附近。
让我先启动小红书应用。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.879s
思考完成延迟: 2.483s
总推理时间: 2.525s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Launch",
"app": "小红书"
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
小红书应用正在加载,显示了启动画面,上面有"小红书"的logo和"你的生活兴趣社区"的标语。我需要等待应用完全加载。由于已经有约2秒的内置延迟,我应再等待几秒让应用完全加载。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.263s
思考完成延迟: 1.635s
总推理时间: 1.685s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Wait",
"duration": "3 seconds"
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
好的,小红书应用已经完全加载了,现在显示的是首页的"发现"标签页。我可以看到顶部有一个搜索图标(右上角的放大镜图标)。我需要点击它来搜索许嵩的官方账号。
搜索图标的位置大约在(922, 65)。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.735s
思考完成延迟: 2.138s
总推理时间: 2.201s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Tap",
"element": [
922,
65
]
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
好的,搜索页面已经打开了。我可以看到顶部有一个搜索框,里面显示着"英语天天练app测评"的提示文字。下方显示了一些热点话题。
我注意到底部有"ADB Keyboard {ON}"的提示,说明ADB键盘已经激活。我现在需要点击搜索框,然后输入"许嵩"来搜索他的官方账号。
搜索框的位置大约在(467, 65)。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 0.795s
思考完成延迟: 1.363s
总推理时间: 1.427s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Tap",
"element": [
467,
65
]
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
搜索框已经被点击了,我可以看到底部仍然显示"ADB Keyboard {ON}",说明键盘已经激活。现在我可以直接使用Type操作输入"许嵩"。根据指南,Type操作会自动清除现有文本并输入新文本。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.559s
思考完成延迟: 1.906s
总推理时间: 1.958s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Type",
"text": "许嵩"
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
太好了!输入"许嵩"后,搜索框显示了相关的搜索建议。我可以看到第一个结果就是"许嵩",并且显示有一个红色的认证标记(✓),说明这是官方账号。下面显示"歌手 | 笔记 4 | 粉丝 17.6万"。
我需要点击这个账号来进入他的主页,然后关注他。第一个结果的位置大约在(223, 131)。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.498s
思考完成延迟: 2.088s
总推理时间: 2.152s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Tap",
"element": [
223,
131
]
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
完美!我已经进入了许嵩的官方账号主页。我可以看到:
- 顶部显示"许嵩"的名字,旁边有红色的认证标记✓
- 显示"歌手 | 小红书号:vaexusong"
- 显示"0关注 17.6万粉丝 17.0万获赞与收藏"
- 有一个红色的"关注"按钮和一个"私信"按钮
现在我需要点击红色的"关注"按钮来关注许嵩。关注按钮的位置大约在(649, 271)。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.645s
思考完成延迟: 2.356s
总推理时间: 2.426s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "do",
"action": "Tap",
"element": [
649,
271
]
}
==================================================
==================================================
💭 思考过程:
--------------------------------------------------
太好了!关注成功了!我可以看到:
1. 原来的红色"关注"按钮现在变成了灰色的"已关注"按钮
2. 页面弹出了一个推荐框,显示"关注TA的人也关注了",推荐了其他用户如Sabrina Car、丁世光Dea、任贤齐等
任务已经完成!我成功地在小红书搜索到了许嵩的官方账号(带有认证标记✓),并且成功关注了他。现在按钮显示"已关注",说明关注操作成功。
==================================================
⏱️ 性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 1.625s
思考完成延迟: 2.343s
总推理时间: 3.122s
==================================================
--------------------------------------------------
🎯 执行动作:
{
"_metadata": "finish",
"message": "任务完成!我已经成功在小红书搜索并找到了许嵩的官方账号(带有认证标记✓,确认是歌手),并完成了关注操作。你可以看到:\n\n1. 关注按钮已从红色的\"关注\"变成了灰色的\"已关注\"\n2. 系统还弹出了推荐框,显示\"关注TA的人也关注了\",推荐了其他相关用户\n\n许嵩的账号信息:\n- 身份:歌手\n- 小红书号:vaexusong\n- 粉丝数:17.6万\n- 获赞与收藏:17.0万"
}
==================================================
🎉 ================================================
✅ 任务完成: 任务完成!我已经成功在小红书搜索并找到了许嵩的官方账号(带有认证标记✓,确认是歌手),并完成了关注操作。你可以看到:
1. 关注按钮已从红色的"关注"变成了灰色的"已关注"
2. 系统还弹出了推荐框,显示"关注TA的人也关注了",推荐了其他相关用户
许嵩的账号信息:
- 身份:歌手
- 小红书号:vaexusong
- 粉丝数:17.6万
- 获赞与收藏:17.0万
==================================================
6.3 性能分析
从执行日志可以看到,AutoGLM 在 8 卡 A100 环境下的性能表现:
- 首 Token 延迟 (TTFT):0.795s - 1.879s
- 思考完成延迟:1.363s - 2.483s
- 总推理时间:1.427s - 3.122s
整个任务包含了 7 个步骤:
- 启动小红书应用
- 等待应用加载
- 打开搜索页面
- 点击搜索框
- 输入搜索关键词
- 选择官方账号
- 执行关注操作
每一步都有清晰的思考过程和执行动作,展现了 AutoGLM 在手机自动化任务中的强大能力。
7. 总结
本文详细介绍了 AutoGLM-Phone-9B 模型在 8 卡 A100 环境下的部署流程,包括:
- NVIDIA 驱动和 Fabric Manager 的安装配置
- Docker 容器环境的准备
- VLLM 服务的启动和配置
- 常见问题的排查和解决
- 实际应用场景的演示
通过 VLLM 的张量并行技术(tensor-parallel-size 8),成功实现了 8 卡并行推理,大幅提升了模型的推理性能,为手机自动化任务提供了高效的 AI 能力支持。