{"slug": "fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram", "title": "Fastllm: A LLM inference library that runs DeepSeek-V4 with 10GB VRAM", "summary": "Fastllm, a C++ LLM inference library, now supports running DeepSeek-V4 and the full DeepSeek R1 671B model on a single GPU with just 10GB VRAM. The library is compatible with Nvidia, AMD, and domestic GPUs, and supports FP8 inference on any GPU.", "body_md": "| [快速开始](#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B) | [部署DeepSeek](/ztxz16/fastllm/blob/master/docs/deepseek.md) | [部署Qwen3](/ztxz16/fastllm/blob/master/docs/qwen3.md) | [版本日志](/ztxz16/fastllm/blob/master/docs/version.md) | [English Document](/ztxz16/fastllm/blob/master/README_EN.md)\n\n本项目参考了许多开源项目的代码和相关文章，具体请参考 [参考代码和文章](#%E5%8F%82%E8%80%83%E4%BB%A3%E7%A0%81%E5%92%8C%E6%96%87%E7%AB%A0)\n\nfastllm是c++实现自有算子替代Pytorch的高性能全功能大模型推理库，可以推理Qwen, Llama, Phi等稠密模型，以及DeepSeek, Qwen-moe等moe模型\n\n- 具有优良的兼容性，支持M40, K80到5090全系列N卡，支持MI50，7900等A卡，支持天数，沐曦等国产卡，支持ThinkForce NPU推理\n- 支持任意显卡的FP8推理\n- 任意显卡只需要显存 > 10G就可以支持单卡推理满血DeepSeek R1 671B模型\n- 双路9004/9005服务器 + 单显卡部署DeepSeek R1 671B - FP8原版模型，单并发速度可达20左右，部署INT4模型单并发速度可达30左右，最高并发速度可达60+\n\n部署交流QQ群：831641348\n\n**微信**\n\n- Fastllm目前支持DeepSeek-V4模型了\n- Fastllm目前支持导出通用动态量化模型了！参考\n[动态量化说明](/ztxz16/fastllm/blob/master/docs/dtype_config.md) - Fastllm目前可以支持部分GGUF模型的读取了！需要注意，目前需要使用\n`--ori`\n\n参数指定源模型配置文件夹，请阅读[使用指南](#%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97)\n\n- 🚀 安装使用简单方便，一条命令就能成功安装，一条命令就能成功运行。\n- 🚀 支持CPU + GPU混合推理MOE大参数模型（单显卡即可推理DEEPSEEK 671B）。\n- 🚀 使用C++实现自有底层算子，不依赖PyTorch。\n- 🚀 兼容性好，PIP安装支持可以支持到P100、MI50等老卡，源码安装支持更多设备。\n- 🚀 支持多卡张量并行推理，支持3、5、7等奇数张卡。\n- 🚀 支持GPU + CPU混合张量并行推理\n- 🚀 支持CPU和显卡实现FP8运算，老设备也可以运行\n- 🚀 支持多CPU加速，且只占用1份内存\n- 🚀 支持ROCM，AMD GPU；支持天数，沐曦，燧原；支持华为昇腾。\n- 🚀 支持动态Batch，流式输出；前后端分离设计，可跨平台移植，可在安卓上直接编译。\n- 🚀 支持Python\n[自定义模型结构](/ztxz16/fastllm/blob/master/docs/custom.md)\n\n`pip`\n\n安装支持`Nvidia GPU`\n\n和`AMD GPU`\n\n，其余`GPU`\n\n请使用[源码安装](#%E6%BA%90%E7%A0%81%E5%AE%89%E8%A3%85)`pip`\n\n安装速度慢时，可使用镜像加速\n\n```\npip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple\npip install ftllm -U\n```\n\n由于目前PyPI限制库大小，安装包中不含ROCM依赖，安装ftllm之前建议先手动安装ROCM 6.3.3 (若已安装ROCM可跳过)\n\n```\nwget wget https://repo.radeon.com/amdgpu-install/6.3.3/ubuntu/jammy/amdgpu-install_6.3.60303-1_all.deb\napt install ./amdgpu-install_6.3.60303-1_all.deb -y\namdgpu-install --usecase=hiplibsdk,rocm,dkms -y\n```\n\n然后用pip安装，命令如下：\n\n```\npip install ftllm-rocm -U\n```\n\n第一次安装前需要安装依赖库:\n\n```\npip install https://www.modelscope.cn/models/huangyuyang/fastllmdepend-windows/resolve/master/ftllmdepend-0.0.0.2-py3-none-win_amd64.whl\n```\n\n然后用pip安装，命令如下：\n\n```\npip install ftllm -U\n```\n\n- Hint\n\nConda下安装有时候会出现环境错误，如果出现可以尝试在Conda外或使用venv等虚拟环境尝试\n\n（若使用时报错，可参考[ftllm报错](/ztxz16/fastllm/blob/master/docs/faq.md#ftllm%E5%8A%A0%E8%BD%BD%E6%8A%A5%E9%94%99) )\n\n可以运行一个较小模型测试安装是否成功, 以Qwen/Qwen3-0.6B模型为例\n\n```\nftllm run Qwen/Qwen3-0.6B\nftllm webui Qwen/Qwen3-0.6B\nftllm server Qwen/Qwen3-0.6B\nftllm\nftllm tui\n```\n\n`ftllm`\n\n不带参数时会进入终端部署向导，等价于 `ftllm tui`\n\n。它会保存部署配置到本机用户配置目录，首页可通过键盘选择已保存命令进行新建、编辑、启动或删除。部署表单默认只显示基础配置，更多参数放在高级选项中；模型路径必须填写为已存在的本地目录，可按 Tab 补全目录；也可以从常用 ModelScope 模型列表中选择模型并下载到指定目录。\n\n基本的启动命令格式如下：\n\n```\nftllm run Qwen/Qwen3-0.6B # 启动本地对话\nftllm webui Qwen/Qwen3-0.6B # 启动WebUI\nftllm server Qwen/Qwen3-0.6B # 启动API Server\nftllm # 通过终端命令列表选择/编辑/启动部署配置，模型路径必须是已存在目录\n```\n\n根据你需要开启的服务，选择相应的命令。以 `server`\n\n命令为例，格式如下：\n\n```\nftllm server model\n```\n\n这里的`model`\n\n可以是:\n\n- Huggingface上的模型，例如\n`Qwen/Qwen3-0.6B`\n\n代表[千问3-0.6B模型](https://hf-mirror.com/Qwen/Qwen3-0.6B) - 本地模型路径。例如\n`/mnt/Qwen3-0.6B`\n\n，高速下载模型可以参考[模型下载](#%E6%A8%A1%E5%9E%8B%E4%B8%8B%E8%BD%BD)\n\n无论是在线模型还是本地模型，目前支持以下几种格式 （均以在线模型举例，可以在Huggingface上搜到对应模型）:\n\n`FP16`\n\n,`BF16`\n\n格式的原始模型，例如`Qwen/Qwen3-0.6B`\n\n`FP8`\n\n格式的模型，例如`Qwen/Qwen3-0.6B-FP8`\n\n`AWQ`\n\n格式的模型，例如`Qwen/Qwen3-14B-AWQ`\n\n`Fastllm`\n\n格式的模型，例如`fastllm/DeepSeek-V3-0324-INT4`\n\n。也可以下载原始模型后通过[模型导出](#%E6%A8%A1%E5%9E%8B%E5%AF%BC%E5%87%BA)中的命令导出`GGUF`\n\n格式的模型，需要用`--ori`\n\n参数指定原始模型路径，例如\n\n```\nftllm server DeepSeek-V3-0324-Q4_K_M-00001-of-00009.gguf --ori DeepSeek-V3\n```\n\n这里的`DeepSeek-V3`\n\n是原始模型文件夹，无需下载权重文件，可以参考如下命令下载：\n\n```\nftllm download deepseek-ai/DeepSeek-V3 --exclude \"*safetensors*\"\n```\n\n如果您是第一次使用ftllm，建议直接使用基本的启动命令启动，所有的参数都会自动设置。如果您希望继续调参，请参照下面的参数设置说明\n\n当启动的模型为浮点精度时（`BF16`\n\n, `FP16`\n\n, `FP8`\n\n）时，可以通过以下参数来设置模型的推理精度：\n\n-\n`--dtype`\n\n:**描述**: 指定模型的数据类型。**可选值**:`int4g`\n\n`int4`\n\n`int8`\n\n`fp8`\n\n`float16`\n\n或其他支持的数据类型。**示例**:`--dtype int4`\n\n-\n`--moe_dtype`\n\n:**描述**: 指定模型MOE层的数据类型。**可选值**:`int4g`\n\n`int4`\n\n`int8`\n\n`fp8`\n\n`float16`\n\n或其他支持的数据类型。**示例**:`--moe_dtype int4`\n\n**说明**: 如果指定的模型不是`moe`\n\n结构的模型，这个参数不会生效\n\n命令示例：\n\n```\nftllm server Qwen/Qwen3-0.6B --dtype int8 \n# 上面的命令会读取原始模型（这个模型是BF16精度），并在线量化为INT8精度推理\n\nftllm server deepseek-ai/DeepSeek-V3-0324 --dtype fp8 --moe_dtype int4\n# 上面的命令会读取原始模型（这个模型是FP8精度），并使用FP8 + INT4的混合精度推理\n```\n\n`--dtype_config`\n\n:**描述**: 指定动态量化配置文件。**说明**: 参考[动态量化说明](/ztxz16/fastllm/blob/master/docs/dtype_config.md)\n\n若不设定这些参数，ftllm会使用模型中设定的精度来进行推理\n\n若使用的模型已经是量化好的模型（例如AWQ模型，Fastllm导出的量化模型等），建议不指定这些参数\n\n可以通过以下参数来设定执行推理的设备\n\n-\n`--device`\n\n:**描述**: 指定模型运行的计算设备。**示例**:`--device cpu`\n\n,`--device cuda`\n\n**常用值说明**:`cpu`\n\n使用`cpu`\n\n推理`cuda`\n\n使用`gpu`\n\n推理`numa`\n\n使用多路`numa`\n\n节点加速推理，在多CPU的机器才会有提升。使用numa加速时，强烈建议关闭系统numa平衡。（ubuntu中可使用命令`sudo sysctl -w kernel.numa_balancing=0`\n\n)`multicuda`\n\n使用多设备张量并行推理**使用多显卡**:`--device multicuda:0,1`\n\n**使用多显卡+CPU**:`--device multicuda:0,cpu`\n\n**按比例使用多显卡+CPU**:`--device multicuda:0:4,1:5,cpu:1`\n\n(`cuda:0`\n\n计算4/10,`cuda:1`\n\n计算5/10,`cpu`\n\n计算1/10)\n\n**串行计算**: 一些场景下可以指定不同的device串行执行。例如`--device \"{'cuda:0':3,'cuda:1':2}\"`\n\n: 这样`3/5`\n\n的层会运行在`cuda:0`\n\n上，`2/5`\n\n的层会运行在`cuda:1`\n\n上`--device \"{'multicuda:0,1':3,'cuda:1':2}\"`\n\n: 这样`3/5`\n\n的层会使用`cuda:0`\n\n,`cuda:1`\n\n张量并行，`2/5`\n\n的层仅仅运行在`cuda:1`\n\n上**简写**:`--device cudapp=N`\n\n表示N卡均匀串行，例如`--device cudapp=4`\n\n等价于`--device \"{'cuda:0':1,'cuda:1':1,'cuda:2':1,'cuda:3':1}\"`\n\n**简写**:`--device cudapp=1:2:3`\n\n表示三卡按1:2:3比例串行，等价于`--device \"{'cuda:0':1,'cuda:1':2,'cuda:2':3}\"`\n\n-\n`--moe_device`\n\n:**描述**: 指定 MOE（Mixture of Experts）层的计算设备。**示例**:`--moe_device cpu`\n\n,`--moe_device numa`\n\n**常用值说明**:`cpu`\n\n使用`cpu`\n\n推理`numa`\n\n使用多路`numa`\n\n节点加速推理，在多CPU的机器才会有提升`cuda`\n\n使用`gpu`\n\n推理 （MOE层需要大量显存，一般不建议指定为`cuda`\n\n）\n\n**说明**: 一般和device指定为不同的设备实现混合推理，例如`--device cuda --moe_device cpu`\n\n来实现MOE模型的单卡+CPU混合推理。`--device cuda --moe_device numa`\n\n来实现MOE模型的单卡+多NUMA节点加速推理 如果指定的模型不是`moe`\n\n结构的模型，这个参数不会生效\n\n-\n`--moe_device_layers`\n\n:**描述**: 指定最后多少层 MOE 使用`--moe_device`\n\n，前面的 MOE 层继续使用主设备或`--tp`\n\n指定的 CUDA 张量并行设备。**示例**:`--tp 0,1 --moe_device numa --moe_device_layers 8`\n\n**说明**: 默认`-1`\n\n表示所有 MOE 层都使用`--moe_device`\n\n，设置为`0`\n\n表示不单独把后段 MOE 放到`--moe_device`\n\n。\n\n若不设定这些参数，会使用默认配置来推理，默认配置如下：\n\n| 模型类型 | device | moe_device |\n|---|---|---|\n| 稠密模型 | cuda | 不生效 |\n| MOE模型 | cuda | cpu |\n\n如果只设置了device没设置moe_device，则moe_device会跟随device\n\n对于发烧友而言，如果想更进一步榨干硬件，可以参考 [混合推理指南](/ztxz16/fastllm/blob/master/docs/mixforward.md)\n\nmulticuda专用worker线程的调优环境变量见 [混合推理指南：multicuda调优环境变量](/ztxz16/fastllm/blob/master/docs/mixforward.md#multicuda%E8%B0%83%E4%BC%98%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F)\n\n可以通过下列参数设置运行参数。\n\n需要注意的是，速度和参数设置并不一定正相关，如果对性能要求高，可以多方向尝试一下\n\n`-t`\n\n或`--threads`\n\n:**描述**: 设置使用的CPU线程数。- 当\n`device`\n\n为`cpu`\n\n时，这个参数决定了推理使用的线程数 - 当\n`device`\n\n为`numa`\n\n时，推理线程数主要由环境变量`FASTLLM_NUMA_THREADS`\n\n决定，`threads`\n\n参数请设得小一点（推荐设为1）\n\n- 当\n**示例**:`-t 27`\n\n例如我们在多CPU设备上用GPU + 多CPU混合部署一个`MOE`\n\n模型`fastllm/DeepSeek-V3-0324-INT4`\n\n，可以尝试这些命令：\n\n```\nexport FASTLLM_NUMA_THREADS=27 && ftllm server fastllm/DeepSeek-V3-0324-INT4 --device cuda --moe_device numa -t 1 \n# 使用多numa推理，每个numa节点使用27个线程\n\nexport FASTLLM_NUMA_THREADS=16 && ftllm server fastllm/DeepSeek-V3-0324-INT4 --device cuda --moe_device numa -t 1 \n# 使用多numa推理，每个numa节点使用16个线程\n\nnumactl -C 0-31 -m 0 ftllm server fastllm/DeepSeek-V3-0324-INT4 --device cuda --moe_device cpu -t 27 \n# 绑定单numa节点，使用CPU推理，使用27线程\n```\n\n不同硬件上，不同参数发挥出的性能有很大不同。一般而言，CPU上使用的线程数不建议超过物理核数\n\n-\n`--moe_experts`\n\n:**描述**: 指定 MOE（Mixture of Experts）层使用的专家数。不设定则根据模型配置设定。减少专家数可以提高推理速度，但可能降低推理准确度**示例**:`--moe_experts 6`\n\n-\n`--cuda_se`\n\n:**描述**: 指定 MOE中的共享专家 是否在cuda上执行，默认为true**示例**:`--cuda_se false`\n\n-\n`--cuda_slab`\n\n:**描述**: 设置 CUDA 模型权重 slab 分配块大小，单位 MB。默认`0`\n\n表示关闭。将大量 MOE 专家权重放在 CUDA 上时，可用它减少小权重分别`cudaMalloc`\n\n带来的显存页对齐和碎片开销。**示例**:`--cuda_slab 1024`\n\n-\n`--port`\n\n:**描述**: 指定服务运行的端口号。**示例**:`--port 8080`\n\n-\n`--help`\n\n:**描述**: 查看模块参数详细信息。**示例**:`ftllm server --help`\n\n-\n`--version`\n\n或`-v`\n\n:**描述**: 查看ftllm版本号。**示例**:`ftllm -v`\n\n-\n`--hide_input`\n\n:**描述**: server模式隐藏日志中的请求信息。**示例**:`ftllm server --hide_input`\n\n-\n`--api_key`\n\n:**描述**: server模式设定api_key。**示例**:`ftllm server --api_key xxxxxxxx`\n\n-\n`--max_token`\n\n:**描述**: webui模式指定最大输出。**示例**:`ftllm webui --max_token`\n\n-\n`--think`\n\n:**描述**: 强制思考。**示例**:`ftllm webui --think`\n\n-\n`--cache_dir`\n\n:**描述**: 指定在线Huggingface模型的缓存目录**示例**:`ftllm --cache_dir /mnt`\n\n-\n`--chat_template`\n\n:**描述**: 指定chat_template文件**示例**:`ftllm --chat_template deepseekv31.jinja`\n\n目前以下模型支持工具调用：\n\n- GLM4.5, GLM4.5-AIR\n- Qwen3-Instruct系列\n- Qwen3-Coder系列\n- Kimi-K2\n- DeepSeekV3.1, 需要指定chat_template, 文件位于本项目\n`example/chat_template/deepseekv31.jinja`\n\n可以使用如下命令将模型下载到本地（使用高速镜像，无需科学上网）\n\n```\nftllm download deepseek-ai/DeepSeek-R1\n```\n\n如果使用量化加载模型（如`--dtype int4`\n\n），那么每次读取模型时会在线量化，读取速度较慢。\n\nftllm export 是一个用于导出和转换模型权重的工具。它支持将模型权重转换为不同的数据类型。以下是如何使用 ftllm export 的详细说明。\n\n```\nftllm export <模型路径> -o <输出路径> --dtype <数据类型> -t <线程数>\nftllm export /mnt/DeepSeek-V3 -o /mnt/DeepSeek-V3-INT4 --dtype int4 -t 16\n```\n\n可以通过指定`--moe_dtype`\n\n来实现混合精度，例如\n\n```\nftllm export /mnt/DeepSeek-V3 -o /mnt/DeepSeek-V3-FP16INT4 --dtype float16 --moe_dtype int4 -t 16\n```\n\n导出后的模型使用方法和原始模型类似，使用导出模型时`--dtype`\n\n参数将被忽略\n\n例如\n\n```\nftllm run /mnt/DeepSeek-V3-INT4/\n```\n\n如果需要运行更多早期的模型，请参考[支持模型列表](/ztxz16/fastllm/blob/master/docs/models.md)\n\n若pip安装失败或有其它特殊需求，可以用源码编译安装 源码安装后如果需要卸载，方法和PIP安装一样\n\n```\npip uninstall ftllm\n```\n\n建议使用cmake编译，需要提前安装gcc，g++ (建议9.4以上), make, cmake (建议3.23以上)\n\n需要安装numa库，在Ubuntu下的安装命令一般使用：\n\n```\napt-get install libnuma-dev\n```\n\n如果编译出错，建议使用AI工具帮忙安装环境\n\nGPU编译需要提前安装好CUDA编译环境，建议使用尽可能新的CUDA版本，并安装NCCL包\n\n使用如下命令编译\n\n```\nbash install.sh -DUSE_CUDA=ON -D CMAKE_CUDA_COMPILER=$(which nvcc) # 编译GPU版本\n# bash install.sh -DUSE_CUDA=ON -DCUDA_ARCH=89 -D CMAKE_CUDA_COMPILER=$(which nvcc) # 可以指定CUDA架构，如4090使用89架构\n# bash install.sh # 仅编译CPU版本\n```\n\n其他不同平台的编译可参考文档\n\n编译中遇到问题可参考 [FAQ文档](/ztxz16/fastllm/blob/master/docs/faq.md)\n\n[1Cat-vLLM 中的 awq_sm70_gemm 适配思路](https://github.com/1CatAI/1Cat-vLLM/blob/main/csrc/quantization/awq/awq_sm70_gemm.cu)\n\n感谢大佬对开源社区的贡献！如发现未标明的引用代码可在issue中提出", "url": "https://wpnews.pro/news/fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram", "canonical_source": "https://github.com/ztxz16/fastllm", "published_at": "2026-06-30 03:47:19+00:00", "updated_at": "2026-06-30 04:19:51.008266+00:00", "lang": "en", "topics": ["large-language-models", "ai-infrastructure", "ai-tools", "ai-research"], "entities": ["Fastllm", "DeepSeek-V4", "DeepSeek R1", "Qwen", "Llama", "Phi", "Nvidia", "AMD"], "alternates": {"html": "https://wpnews.pro/news/fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram", "markdown": "https://wpnews.pro/news/fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram.md", "text": "https://wpnews.pro/news/fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram.txt", "jsonld": "https://wpnews.pro/news/fastllm-a-llm-inference-library-that-runs-deepseek-v4-with-10gb-vram.jsonld"}}