Introduce
GPUStack 是一个开源的 GPU 集群管理器,专为运行 AI 模型而设计。它以其广泛的硬件兼容性而闻名,支持多种品牌的 GPU,并能在 Apple MacBook、Windows PC 和 Linux 服务器上运行。
GPUStack支持各种AI模型,包括大型语言模型(LLMs)、扩散模型、音频模型、嵌入模型和重新排序模型。该平台易于扩展,支持单节点多 GPU 和多节点推理及服务,并提供多种推理后端,如 llama-box
、``vox-box和
vLLM`。作为一个轻量级的 Python 包,GPUStack 具有最小的依赖项和操作开销,并且提供与 OpenAI 标准兼容的 API。
此外,它还简化了用户和 API 密钥的管理,提供了 GPU 性能和利用率的实时监控,以及令牌使用和速率限制的有效跟踪。GPUStack 支持Apple Metal (M系列芯片), NVIDIA CUDA(计算能力6.0及以上), Ascend CANN(华为系列),Moore Threads MUSA加速器,以及 AMD64 和 ARM64 架构,并计划未来支持更多加速器技术。它还支持来自 Hugging Face、ModelScope、Ollama Library 和本地文件路径的多种模型,包括 LLMs(Qwen, LLaMA, Mistral, Deepseek, Phi, Yi)、VLLMs(Llama3.2-Vision, Pixtral, Qwen2-VL, LLaVA, InternVL2)、扩散模型(Stable Diffusion, FLUX)、重新排序器(GTE, BCE, BGE, Jina)和音频模型(Whisper,CosyVoice)。
特性:
- 跨平台:Windows,Mac,Linux / ARM64 & AMD64;
- 多加速器支持:Apple Silicon,NVIDIA,Ascend,Moore;
- 单节点 / 多节点;
- 多种模型:LLMs、VLLMs、扩散模型、重新排序器、音频模型;
1. Docker 安装 GPUStack
近期由于源的问题,访问不畅,加之需要下载约 13GB 的资源,每个节点的安装过程可能持续 20-40 分钟,请各位朋友耐心等待。如果有好的镜像源也可以尝试。
1.1 安装指令(Linux 主节点 Worker)
docker run \-d \--gpus all \-p 8080:80 \--ipc=host \--name gpustack \-v gpustack-data:/var/lib/gpustack \gpustack/gpustack
使用 --ipc=host 参数或者 --shm-size 参数来允许容器访问宿主机的共享内存。这在vLLM和pyTorch中用于在后台进程间共享数据,特别是在进行张量并行推理时。
由于
gpustack-data
容器卷是用来储存待部署的模型,因此及其占用磁盘存储空间,各位可修改为其它的磁盘位置。
1.2 安装指令(Linux 子节点 Worker)
docker run -d \--gpus all \--ipc=host \--network=host \gpustack/gpustack \--name gpustack \--server-url http://myserver \--token mytoken
其中的
--server-url
为你的主节点的地址其中的
--token
为你的主节点用于添加子节点的 token,使用下面的指令从主节点获取
docker exec -it gpustack cat /var/lib/gpustack/token
1.3 Windows 子节点安装指令(非Docker)
Invoke-Expression "& { $((Invoke-WebRequest -Uri 'https://get.gpustack.ai' -UseBasicParsing).Content) } -- --worker-ip '192.168.31.223' --port 9999 --server-url http://myserver --token mytoken --tools-download-base-url 'https://gpustack-1303613262.cos.ap-guangzhou.myqcloud.com'"
鉴于 Windows 的 Docker 需要使用 GPU 还需要安装 WSL 子系统等依赖,这里给出了使用 PowerShell(管理员)的安装方法。上述的指令中 --worker-ip
需要是你的子节点的 IP 地址,--port
也需要设置,如果这两个不填写会出现如下的报错:
[WinError] 以一种访问权限不允许的方式做了一个访问套接字的尝试
笔者尝试过使用netstat -ano|findstr 10150
和 taskkill
终止掉占用的程序,但是这个报错依然存在,重启 NAT
也无济于事。所以请务必按照上面的方式设置 worker
的 IP 和 Port。
其余的和 Docker 的安装解释一致。
2. GPUStack 使用
使用下面的指令获得 admin
用户的登录密码,第一次登录后会要求修改密码
docker exec -it gpustack cat /var/lib/gpustack/initial_admin_password
上图展示的就是 v0.4.1
版本的主界面,可以看到有一个 Workers(节点),两块 GPU。
2.1 模型部署
从 侧边栏 > 模型 > 模型部署 > ModelScope
中点击,可以看到下面的模型部署界面,在此可以搜索你需要部署的模型。
2.2 试验场
在试验场,也就是熟悉的 Playground,可以评估已部署的模型的效果
2.3 资源
在资源栏可以看到每一个 Worker(节点)的资源使用情况,或者每一个 GPU 的使用情况。
2.4 添加子节点
使用第一部分给出的方法,在另外一台电脑以子节点的方式安装 GPUStack Worker。等待安装完成之后,在资源界面刷新,即可看到新的节点资源。这里需要注意,例如笔者我的这三张显卡,架构跨度太大,CUDA 版本跨度太大,在运行时会出现错误。
笔者部署了一个 Rerank
和 Embedding
模型到这个子节点上,并运行了一个重排序测试,结果如下。
此时的子节点上的 GPU 也被调用。此时查看该模型在节点上的调用日志,如下。