跳到主要内容

在 Linux 上安装

从头到尾只需要三条命令。

1. 确认机器已经准备好​

# Docker 已安装,且你无需 sudo 就能使用它
docker run hello-world

# NVIDIA 驱动已安装,且 Docker 能看到这块 GPU
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

第二条命令必须打印出你的显卡信息。如果失败了,说明缺少驱动或 NVIDIA Container Toolkit ——这是唯一需要你自己安装的部分。

2. 选一个密码并保存好​

它用来加密你保存的 token。生成一个,并保存在六个月后你仍然能找到的地方。

export AGENT_ENCRYPTION_PASSWORD="$(openssl rand -base64 32)"
echo "$AGENT_ENCRYPTION_PASSWORD" # 现在就把它记下来

3. 运行它​

docker run -d --name neurogrid-agent \
--gpus all --restart unless-stopped \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
--dns 1.1.1.1 --dns 8.8.8.8 \
-v neurogrid-data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/neurogrid/workloads:/var/lib/neurogrid/workloads \
-e AGENT_ENCRYPTION_PASSWORD="$AGENT_ENCRYPTION_PASSWORD" \
ghcr.io/neurogrid-ai-exchange/neurogrid-agent:latest --token ng_live_xxxxxxxx

把 ng_live_xxxxxxxx 换成控制台给你的 token。安装到这里就完成了——如果你 还没有这个镜像,它会自动拉取。

看看它启动的过程:

docker logs -f neurogrid-agent

你要找的是 Bootstrap sent successfully,然后是每 30 秒出现一次的 Heartbeat sent successfully。你的 GPU 会在同一时刻在控制台变成已确认。

不需要再次传入 --token。就算你又传了一次,也会被忽略,仍然使用已保存 的那个。

每个参数的作用​

参数为什么不能去掉
--gpus all没有它,容器里就没有 nvidia-smi,代理也就无法测量显存或为模型分配大小
--dns 1.1.1.1 --dns 8.8.8.8Docker 在容器创建时固定 DNS,之后永远不会更新。如果没有这些在任何网络下都存在的解析服务器,把这台机器移到别的网络就会在不知不觉中出问题——参见故障排查
-v neurogrid-data:/data保存加密的 token 和你的配置,这样升级时主机仍保持已注册状态
-v /var/run/docker.sock代理用它来启动任务容器。这等同于对主机的 root 级访问权限——容器只是打包方式,不是安全边界
-v /var/lib/neurogrid/workloads任务工作区,故意在两边使用相同路径:代理把这个路径交给 Docker 守护进程,由它在主机上解析
--restart unless-stopped崩溃后会自动恢复,随机器重启而恢复,但如果你主动停止它,它就会保持停止状态

使用 Docker Compose​

一旦过了测试阶段就很值得——它把这些参数存进一个文件,而不是留在你的 shell 历史记录里。

curl -fLO https://raw.githubusercontent.com/NeuroGrid-AI-exchange/neurogrid-agent/main/docker-compose.yml
export AGENT_ENCRYPTION_PASSWORD="$(openssl rand -base64 32)"

docker compose run --rm agent --register-only --token ng_live_xxxxxxxx
docker compose up -d

--register-only 会在注册成功后立刻退出,而不是继续进入守护进程。把它单 独作为一步是值得的,因为 up -d 是以分离模式运行的:否则注册失败就会变成 一个原因埋在日志里的重启循环,而不是一个你能立刻看到的非零退出码。

各项内容保存在哪里​

路径
Token 与配置neurogrid-data volume,容器内对应 /data
日志docker logs neurogrid-agent
任务工作区主机上的 /var/lib/neurogrid/workloads

没有任何内容会写进你的主目录。

接下来​