cake

cake

框架实现分布式大模型推理 充分利用闲置设备

Cake是基于Candle的Rust框架,通过整合iOS、Android、macOS、Linux和Windows设备为异构集群,实现大型模型(70B+)的分布式推理。该框架将transformer块分片到多设备上,突破单设备GPU内存限制,有效利用闲置硬件资源,降低AI应用门槛。

Cake分布式推理大型模型异构集群AI民主化Github开源项目
<p align="center"> <small>加入我们的项目社区服务器!</small> <br/><br/> <a href="https://discord.gg/https://discord.gg/btZpkp45gQ" target="_blank" title="加入我们的社区!"> <img src="https://dcbadge.limes.pink/api/server/https://discord.gg/btZpkp45gQ"/> </a> </p> <hr/>

Cake是一个基于Candle的Rust框架,用于分布式推理大型模型,如LLama3Stable Diffusion。该项目的目标是通过将消费级硬件重新用作iOS、Android、macOS、Linux和Windows设备的异构集群,来运行大型(70B+)模型,有效地利用计划报废作为工具,使人工智能更加accessible和民主化。

<p align="center"> <strong> ⚠ 这是正在积极开发和快速变化的实验性代码,请预期会有bug ⚠ </strong> </p>

这个想法是将transformer块分片到多个设备上,以便能够对通常无法装入单个设备GPU内存的模型进行推理。同一工作节点上连续transformer块的推理会被批处理,以最小化数据传输造成的延迟。

支持

操作系统架构加速状态
GNU/Linuxarm, arm64, x86_64-
GNU/Linuxarm, arm64, x86_64CUDA
GNU/Linuxarm, arm64, x86_64BLAS
Windowsx86_64BLAS未测试
Windowsx86_64CUDA
macOSx86_64-
macOSaarch64-
macOSaarch64Metal
Androidarm, arm64, x86_64-
Androidarm, arm64, x86_64CUDA未测试
iOS / iPadOSaarch64-
iOS / iPadOSaarch64Metal🛠️ 90% 完成,进行中
Web-WebGPU理论上可行,尚未完成

CUDA加速系统需要CUDA >= 12.2。

编译

安装Rust后,您可以使用不同的加速方式构建核心库和CLI工具。

无加速(将使用CPU):

cargo build --release

Apple Silicon的Metal加速:

cargo build --release --features metal

CUDA加速:

cargo build --release --features cuda

生成可通过XCode编译和部署的iOS绑定:

make ios

使用方法

运行工作节点:

cake-cli --model /path/to/Meta-Llama-3-8B \ # 模型路径,阅读下文了解如何优化工作节点的模型大小 --mode worker \ # 以工作节点模式运行 --name worker0 \ # 拓扑文件中的工作节点名称 --topology topology.yml \ # 拓扑 --address 0.0.0.0:10128 # 绑定地址

运行带有OpenAI兼容REST API的主节点:

cake-cli --model /path/to/Meta-Llama-3-8B \ # 模型路径 --api 0.0.0.0:8080 \ # API绑定地址 --topology topology.yml # 拓扑文件

topology.yml 决定了哪些层由哪个工作节点提供服务(你可以在模型的张量索引文件中找到所有层的列表):

linux_server_1: host: 'linux_server.host:10128' description: 'NVIDIA Titan X Pascal (12GB)' layers: - 'model.layers.0-5' linux_server_2: host: 'linux_server2.host:10128' description: 'NVIDIA GeForce 3080 (10GB)' layers: - 'model.layers.6-16' iphone: host: 'iphone.host:10128' description: 'iPhone 15 Pro Max' layers: - 'model.layers.17' ipad: host: 'ipad.host:10128' description: 'iPad' layers: - 'model.layers.18-19' macbook: host: 'macbook.host:10128' description: 'M1 Max' layers: - 'model.layers.20-31'

现在你可以通过以下方式与集群交互:

curl http://master-ip:8080/api/v1/chat/completions \ ~ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "system", "content": "你是一个乐于助人的AI助手。" }, { "role": "user", "content": "为什么天空是蓝色的?" } ] }'

拆分模型

作为内存和磁盘空间优化,你可能希望只给工作节点提供它实际需要的模型数据,而不是整个文件夹。在这种情况下,你可以使用 cake-split-model 工具。例如,要生成 llama3 safetensors 的较小版本,你可以:

cake-split-model --model-path path/to/Meta-Llama-3-8B \ # 要拆分的源模型 --topology path/to/topology.yml \ # 拓扑文件 --output output-folder-name # 保存所有工作节点数据包的输出文件夹

这将创建一个较小的文件夹,其中只包含所需层的张量和特定工作节点的拓扑文件。在部署工作节点之前,记得也要将其他模型内容(config.json、tokenizer.json 等)复制到工作节点包中。

Stable Diffusion 图像生成

topology.yml 中定义模型部分:

wsl2_on_windows: host: 192.168.1.2:10128 description: NVIDIA RTX 4090 24GB layers: - unet macbook: host: 192.168.1.3:10128 description: Macbook M2 layers: - clip - vae

运行工作节点:

cake-cli --model /path/to/hf/cache \ # Huggingface 模型的缓存目录 --mode worker \ # 以工作节点模式运行 --name wsl2_on_windows \ # 拓扑文件中的工作节点名称 --model-type image-model \ # 对 SD 使用 image-model,对 LLM 使用 text-model 或跳过 --topology topology.yml \ # 拓扑文件 --address 0.0.0.0:10128 # 绑定地址

可以通过指定更多命令行参数在 SD1.5、SD2.1、SDXL 和 SDXL Turbo 之间切换模型。

如果在本地缓存目录中找不到模型文件,将自动从 Huggingface 下载。

运行带有 REST API 的主节点:

cake-cli --model /path/to/hf/cache \ # Huggingface 模型的缓存目录 --api 0.0.0.0:8080 \ # API 绑定地址 --model-type image-model \ # 对 SD 使用 image-model,对 LLM 使用 text-model 或跳过 --topology topology.yml # 拓扑文件

使用集群生成图像:

curl http://master-ip:8080/api/v1/image \ ~ -H "Content-Type: application/json" \ -d '{ "image_args": { "sd-image-prompt": "一个老人坐在海边的椅子上", "sd-num-samples": 1, "sd-image-seed": 2439383 } }'

更多控制参数可以在代码中找到。

许可证

本项目基于GPL 3许可证发布。要查看项目依赖项的许可证,请使用cargo install cargo-license安装cargo license,然后运行cargo license命令。

编辑推荐精选

潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

下拉加载更多