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命令。

编辑推荐精选

TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

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

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

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

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

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

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

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多