尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

mistral.rs Cargo Features 完全指南:按硬件与场景选择加速后端与功能开关

mistral.rs Cargo Features 完全指南:按硬件与场景选择加速后端与功能开关 mistral.rs Cargo Features 完全指南按硬件与场景选择加速后端与功能开关【免费下载链接】mistral.rsFast, flexible LLM inference项目地址: https://gitcode.com/GitHub_Trending/mi/mistral.rsmistral.rs 使用 Cargo features特性开关来隔离平台相关的加速后端与可选功能保证同一套代码可以在 NVIDIA CUDA、Apple Silicon Metal、纯 CPU 等不同环境下分别编译出最合适的二进制。本文以官方 cargo-features.md 为骨架结合仓库内各 crate 的 Cargo.toml 与 CLI 源码系统讲解每个 feature 的用途、适用硬件、典型组合、启用方式与验证手段帮助你在安装或源码编译阶段一次性选对配置。加速器 features按硬件选择计算后端mistral.rs 把硬件加速能力拆分为互不依赖的独立 feature默认情况下不会启用任何加速器必须显式选择匹配你硬件的后端。下表列出了全部加速器 features 及其作用的 crate 与用途FeatureCratesPurposecudamistralrs-cli、mistralrs、mistralrs-core、mistralrs-server-coreNVIDIA CUDA 加速包括 paged attention分页注意力。cudnn同上cuDNN 加速的内核。flash-attn同上Flash Attention v2Ampere 及以上依赖cuda。flash-attn-v3mistralrs-cli、mistralrs-core、mistralrs-server-coreFlash Attention v3Hopper依赖cuda。顶层mistralrscrate 不暴露该 feature。cutilemistralrs-cli、mistralrs、mistralrs-core、mistralrs-pyo3cuTile 加速覆盖量化线性层、MoE 与 routed LoRA隐式启用cuda。要求 CUDA 13.2Ampere/Ada 与 Blackwell、CUDA 13.3Hopper并需安装兼容的tileiras。NVFP4 量化推理要求 Blackwell 与 CUDA 13.3详见 cuTile setup 与 Quantization types。metal同上Apple Silicon GPU 支持Metal。accelerate同上Apple Accelerate 框架用于 CPU 数学运算。mkl同上Intel MKL用于 CPU 数学运算。ncclmistralrs-cli、mistralrs、mistralrs-core、mistralrs-server-coreNCCL 单机 CUDA 多 GPU 支持构建期与运行期都需要 NCCL 运行时库。feature 之间的隐含依赖关系从 mistralrs-cli/Cargo.toml 的[features]段可以看到多个 feature 并不是孤立开关而是通过依赖链自动拉起前置条件cuda [mistralrs-core/cuda, mistralrs-server-core/cuda] cutile [cuda, mistralrs-core/cutile] flash-attn [cuda, mistralrs-core/flash-attn, mistralrs-server-core/flash-attn] flash-attn-v3 [cuda, mistralrs-core/flash-attn-v3, mistralrs-server-core/flash-attn-v3] nccl [mistralrs-core/nccl, mistralrs-server-core/nccl]cutile、flash-attn、flash-attn-v3、nccl都隐式启用cuda你无需重复写cuda在 mistralrs-core/Cargo.toml 中cuda还会拉起candle-core/cuda、candle-nn/cuda、cudaforge、mistralrs-quant/cuda与mistralrs-paged-attn等底层依赖说明 CUDA 后端是分页注意力、量化等子系统共同依赖的基础设施flash-attn通过dep:mistralrs-flash-attn引入独立的 mistralrs-flash-attn crate内含kernels/下的各 sm80 CUDA kernel 源文件而flash-attn-v3走的是candle-flash-attn-v3依赖flash-attn-v3在顶层mistralrscrate 中没有对应定义见 mistralrs/Cargo.toml只有flash-attn这与文档中顶层 crate 不暴露 flash-attn-v3的说明一致。典型组合官方推荐根据你的硬件与 CUDA 版本官方给出了以下组合模板NVIDIA Hoppercuda flash-attn flash-attn-v3 cudnnCUDA 13.3 时可追加cutileNVIDIA Ampere 或 Adacuda flash-attn cudnnCUDA 13.2 时可追加cutileNVIDIA Blackwell CUDA 13.2 兼容tileirascuda flash-attn cudnn cutileNVIDIA 较旧架构cuda cudnnApple SiliconmetalIntel CPU MKLmkl补充说明Hopper 与 Ampere/Ada 使用 Flash Attention 的版本差异源于 FA v3 仅面向 Hopper 及以上架构mistralrs doctor会针对每张检测到的 GPU 报告 FA v2 / v3 兼容性见下文cutile对 CUDA 版本有硬性门槛Ampere/Ada 与 Blackwell 需 CUDA 13.2Hopper 需 CUDA 13.3且 cuTile 会在构建期生成 CUDA binding因此源码编译还需要libclang详见 moe-backends.mdLinux 上进行 CUDA 多 GPU 推理时追加nccl需已安装 NCCL。Linux 安装脚本与 CUDA wheel 构建脚本在检测到libnccl时会自动带上该 feature。功能 features与硬件无关的可选能力除加速后端外mistral.rs 还有三个与硬件无关的功能开关FeatureCratesPurposecode-executionmistralrs-cli、mistralrs、mistralrs-core、mistralrs-server-corePython 代码执行工具在mistralrs-cli中为默认启用。ring同上多机环形分布式推理。swagger-uimistralrs-server-core在 HTTP 服务器上挂载 Swagger UImistralrs-server-core中默认开启。swagger-ui在 mistralrs-server-core/Cargo.toml 中定义仅通过dep:utoipa-swagger-ui引入依赖与任何加速器无关属于纯服务器端文档能力ring对应 mistralrs-core/Cargo.toml 中的ring [mistralrs-quant/ring]用于多机分布式推理场景code-execution在mistralrs-core中定义为空特性code-execution []但在 mistralrs-cli/Cargo.toml 中它是default即安装 CLI 后立即可用。启用 features 的三种方式方式一cargo install直接安装cargo install mistralrs-cli --features cuda nccl flash-attn cudnn这是获取预编译可执行文件的常规路径feature 列表按上文典型组合调整即可。注意mistralrs-cli的二进制名是mistralrs见 mistralrs-cli/Cargo.toml 的default-run与[[bin]]段。方式二从源码 checkout 安装cargo install --path mistralrs-cli --features cuda nccl flash-attn cudnn仓库根目录的 Cargo.toml 定义了包含mistralrs-cli、mistralrs-core、mistralrs-server-core、mistralrs-pyo3、mistralrs-quant等在内的完整 workspace并固定了底层 candle、cudaforge、cutile 等依赖版本当前 workspace 版本为 0.9.3从源码编译可保证与仓库代码完全一致。方式三作为依赖嵌入自己的 crate如果你的项目要直接使用mistralrs库在Cargo.toml中声明[dependencies] mistralrs { version 0.8, features [cuda, nccl, flash-attn, cudnn] }库使用者同样遵循加速器不默认启用的原则mistralrs的[package.metadata.docs.rs]明确设置了no-default-features true见 mistralrs/Cargo.toml确保文档构建与默认使用都不带任何加速后端。默认 features 与排除方法各 crate 的默认 feature 策略如下mistralrs-cli默认 feature 为code-executionmistralrs-cli/Cargo.tomlmistralrs-server-core默认 feature 为swagger-uimistralrs-server-core/Cargo.toml没有任何 crate 默认启用加速器 feature加速后端一律按硬件显式选择。如果需要排除默认 feature使用--no-default-features。典型场景是你不想要swagger-ui的额外依赖或者不希望 CLI 默认带上code-execution及其 Python 环境依赖此时可以cargo install mistralrs-cli --no-default-features --features cuda flash-attnPython 侧mistralrs-pyo3的默认 features 为空mistralrs-pyo3/Cargo.tomlwheel 构建时通过 maturin 显式传入需要的加速 feature例如cutile、nccl、flash-attn等这解释了为什么同一 Python 包能针对不同 CUDA 版本产出不同 wheel。验证编译结果mistralrs doctormistralrs doctor会在Build features:一行打印编译进二进制的加速器 featurescuda、metal、cudnn、flash-attn、flash-attn-v3、cutile、accelerate、mkl。而nccl、ring、code-execution、swagger-ui这类功能性 feature 不会出现在该行。该输出的实现位于 mistralrs-cli/src/commands/doctor.rs源码通过cfg!(feature ...)判断system.build.cuda、system.build.metal、system.build.cudnn、system.build.flash_attn、system.build.flash_attn_v3、system.build.cutile、system.build.accelerate、system.build.mkl八个布尔字段将命中的 feature 名称拼入Build features行。若全部未启用则显示none。该命令同时会对每张 GPU 报告计算能力Compute Capability与 FA v2 / FA v3 兼容性doctor.rs你可以借此核对你选的flash-attn/flash-attn-v3是否与真实 GPU 架构匹配cutile是否对当前 GPU 可用cuTile 需要与 GPU 匹配的tileiras安装doctor会逐一检查每张检测到的 GPU详见 moe-backends.md编译时 CUDA 工具链、本地 nvcc、驱动版本是否一致。mistralrs doctor --json还可以输出机器可读的 JSON 报告便于在 CI 或部署脚本中自动校验构建配置。常见配置决策速查场景推荐 features单卡 A100/H100 推理Hoppercuda flash-attn flash-attn-v3 cudnn单卡 3090/4090 推理Ampere/Adacuda flash-attn cudnnBlackwell 上跑 NVFP4cuda flash-attn cudnn cutile需 CUDA 13.3 tileiras老架构 CUDA 卡cuda cudnnMacBookApple Siliconmetal可加accelerate纯 CPU Intel MKLmkl多卡Linux CUDA在对应组合上追加nccl多机分布式推理在对应组合上追加ring嵌入式使用mistralrs库依赖中声明features [...]加速器按需选择需要说明的是feature 选择直接影响二进制体积、依赖数量与运行性能flash-attn/cutile/nccl都会引入体积可观的 CUDA 内核与第三方库按需选择不仅能缩短编译时间也能避免因缺少 NCCL 运行时或tileiras导致启动失败。在动手编译前先运行mistralrs doctor检查当前环境的 GPU 型号、驱动与 CUDA 版本再对照本文的组合表做决定是最稳妥的路径。【免费下载链接】mistral.rsFast, flexible LLM inference项目地址: https://gitcode.com/GitHub_Trending/mi/mistral.rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表