LLMs之Inference:ktransformers的简介、安装和使用方法、案例应用(仅需一张4090即可部署671B的DeepSeek-Coder-V3/R1【GPU在线量化为INT4】)之详细

LLMs之Inference:ktransformers的简介、安装和使用方法、案例应用(仅需一张4090即可部署671B的DeepSeek-Coder-V3/R1【GPU在线量化为INT4】)之详细攻略

目录

ktransformers 简介

0、更新

1、ktransformers 特点

ktransformers 安装和使用方法

1、安装

2、使用方法

示例用法

自定义模型

3、示例

GPT-4/01级别的本地VSCode Copilot:DeepSeek-Coder-V3/R1

LLMs之Inference:基于ktransformers 框架来部署DeepSeek-R1和DeepSeek-V3模型实现更快的本地推理速度(多种优化策略显著提升)之详细攻略

本地236B的DeepSeek-Coder-V2性能

ktransformers的案例应用


ktransformers 简介

ktransformers (发音为 Quick Transformers) 是一个灵活的 Python 框架,旨在通过高级内核优化和部署/并行策略来增强 Hugging Face Transformers 的使用体验。它提供了一个与 Transformers 兼容的接口、符合 OpenAI 和 Ollama 的 RESTful API,甚至还有一个简化的类似 ChatGPT 的 Web UI。ktransformers 的愿景是成为一个灵活的平台,用于实验创新的 LLM 推理优化,尤其关注受资源限制的本地部署。

GitHub地址GitHub - kvcache-ai/ktransformers: A Flexible Framework for Experiencing Cutting-edge LLM Inference Optimizations

官方文档Introduction - Ktransformers

0、更新

2025 年 2 月 15 日:KTransformers V0.2.1:上下文更长(从 4K 增加到 8K,适用于 24GB 显存)且速度稍快(提升 15%)(最高可达 16 个标记/秒)。
2025 年 2 月 10 日:支持 Deepseek-R1 和 V3 在单(24GB 显存)/多 GPU 和 382G 内存上运行,速度提升可达 3 至 28 倍。有关详细展示和复现教程,请点击此处查看。地址:https://github.com/kvcache-ai/ktransformers/blob/main/doc/en/DeepseekR1_V3_tutorial.md
2024 年 8 月 28 日:将 DeepseekV2 所需的显存从 21G 降至 11G
2024 年 8 月 15 日:更新有关注入和多 GPU 的详细教程。
2024 年 8 月 14 日:支持将 llamfile 作为线性后端
2024 年 8 月 12 日:支持多 GPU;支持新模型:mixtral 8*7B 和 8*22B;支持在 GPU 上进行 q2k、q3k、q5k 去量化的操作。
2024 年 8 月 9 日:支持原生 Windows 系统。

1、ktransformers 特点

>> 灵活性和可扩展性:基于模板的注入框架允许轻松替换原始 Torch 模块,并结合多种优化方法。
>> 高级内核优化:集成并利用 GGUF/GGML、Llamafile、Marlin、sglang 和 flashinfer 等先进内核,实现高效的推理
>> 异构计算支持支持 GPU/CPU 卸载量化模型,例如高效利用 Llamafile 和 Marlin 内核。
>> 本地部署优化特别关注受限资源的本地部署优化,例如 24GB VRAM 的桌面设备。
>> 兼容性:提供与 Transformers 兼容的接口,以及与 OpenAI 和 Ollama 兼容的 RESTful API。
>> 简化的 Web UI:提供类似 ChatGPT 的简化 Web UI。

ktransformers 安装和使用方法

1、安装

持续更新中……

相关地址:Deepseek-R1/V3 Show Case - Ktransformers

2、使用方法

ktransformers 的核心是一个用户友好的基于模板的注入框架。研究人员可以使用它轻松地将原始的 torch 模块替换为优化的变体,并简化组合多种优化的过程。

示例用法

用户只需创建一个基于 YAML 的注入模板,并在使用 Transformers 模型之前调用 optimize_and_load_gguf 函数。代码示例如下:

with torch.device("meta"):
    model = AutoModelForCausalLM.from_config(config, trust_remote_code=True)
    optimize_and_load_gguf(model, optimize_rule_path, gguf_path, config)
    ...
    generated = prefill_and_generate(model, tokenizer, input_tensor.cuda(), max_new_tokens=1000)

此示例中,AutoModel 首先在 meta 设备上初始化以避免占用任何内存资源。然后,optimize_and_load_gguf 迭代模型的所有子模块,匹配 YAML 规则文件中指定的规则,并将其替换为指定的先进模块。注入后,可以使用原始的 generate 接口,同时也提供兼容的 prefill_and_generate 方法,该方法可以启用 CUDAGraph 等进一步的优化以提高生成速度。

自定义模型

详细的注入和多 GPU 使用教程 (使用 DeepSeek-V2 为例) (链接未提供在给定文本中)。 YAML 模板示例 (替换所有原始线性模块为 Marlin):

- match:
    name:"^model\\.layers\\..*$" # 正则表达式
    class:torch.nn.Linear # 只匹配名称和类同时匹配的模块
  replace:
    class:ktransformers.operators.linear.KTransformerLinear # 量化数据类型上的优化内核
    device:"cpu" # 初始化时加载此模块的设备
    kwargs:
      generate_device:"cuda"
      generate_linear_type:"QuantizedLinearMarlin"

每个规则包含 match 和 replace 两部分。match 指定要替换的模块,replace 指定要注入的模块及其初始化关键字。

3、示例

GPT-4/01级别的本地VSCode CopilotDeepSeek-Coder-V3/R1

>> 软件版本与硬件配置:GPT-4/01级别的本地VSCode Copilot,运行在24GB VRAM的桌面电脑上。新推出的DeepSeek-Coder-V3/R1,其Q4_K_M版本仅需14GB VRAM和382GB DRAM即可运行。
>> 预填充速度:KTransformers在不同配置下的预填充速度分别为54.21(32核心)→ 74.362(双插座,2×32核心)→ 255.26(优化后的基于AMX的MoE内核,仅限V0.3版本)→ 286.55(选择性使用6个专家,仅限V0.3版本) 与llama.cpp在2×32核心上的10.31 tokens/s相比,实现了高达27.79倍的速度提升。
>> 解码速度:KTransformers在不同配置下的解码速度分别为8.73(32核心)→ 11.26(双插座,2×32核心)→ 13.69(选择性使用6个专家,仅限V0.3版本) 与llama.cpp在2×32核心上的4.51 tokens/s相比,实现了高达3.03倍的速度提升。
>> 开源计划:AMX优化和选择性专家激活功能将在V0.3版本开源。目前这些功能仅在预览版二进制分发中提供。

LLMs之Inference:基于ktransformers 框架来部署DeepSeek-R1和DeepSeek-V3模型实现更快的本地推理速度(多种优化策略显著提升)之详细攻略

LLMs之Inference:基于ktransformers 框架来部署DeepSeek-R1和DeepSeek-V3模型实现更快的本地推理速度(多种优化策略显著提升)之详细攻略-CSDN博客

本地236B的DeepSeek-Coder-V2性能

在仅有 24GB VRAM 的台式机上运行 GPT-4/o1 级别的本地 VSCode Copilot。

DeepSeek-Coder-V2的Q4_K_M版本仅需21GB VRAM和136GB DRAM,即可在本地桌面机上运行。在BigCodeBench上的表现优于GPT4-0613
>> DeepSeek-Coder-V2速度:通过MoE卸载和注入高级内核,实现了2K提示预填充速度为126 tokens/s,生成速度为13.6 tokens/s。
>> VSCode集成:DeepSeek-Coder-V2被封装成兼容OpenAI和Ollama的API,可作为Tabby和其他前端的后端无缝集成。

ktransformers的案例应用

持续更新中……

### 安装 Docker 对于 macOS 用户来说,安装 Docker 的最佳方式是通过官方提供的 Docker Desktop 应用程序。该应用程序包含了运行容器所的一切组件。 #### 下载并安装 Docker Desktop 1. 前往[Docker官网](https://www.docker.com/products/docker-desktop),下载适用于 macOS 版本的应用包。 2. 打开下载好的 `.dmg` 文件,并按照提示完成安装向导中的每一步骤。 3. 启动 Docker Desktop 并登录账户(如果尚未注册,则创建一个免费账号)。 一旦成功启动 Docker Desktop,便可以在终端窗口内验证其状态: ```bash docker --version ``` 这会显示当前已安装的 Docker 版本号[^1]。 ### 安装 Ollama 及配置 GPU 加速 为了使 Ollama 正常运作于 Mac 设备之上,特别是那些搭载 Apple Silicon 架构芯片的产品线里,建议遵循特定指南来确保兼容性性能优化。 由于原生支持有限,可以考虑利用 Rosetta 2 或者基于云服务的方式来进行操作;不过这里主要介绍本地化解决方案——即借助 Metal Performance Shaders (MPS) 实现一定程度上的图形处理单元(GPU)加速效果[^3]。 #### 设置 MPS 环境变量 在命令行界面输入如下指令以激活 MPS 功能: ```bash export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES ``` 接着继续执行下面这条语句用于拉取最新版本镜像文件以及初始化必要的目录结构: ```bash docker pull ghcr.io/open-webui/open-webui:ollama && \ mkdir -p ~/ollama_data/{backend,data} && \ chmod a+rwx ~/ollama_data/ ``` 最后一步则是启动包含指定端口映射关系的服务实例: ```bash docker run -d -p 3000:8080 --gpus all \ -v ~/ollama_data/backend:/app/backend/data \ -v ~/ollama_data/data:/root/.ollama \ --name open-webui --restart always \ ghcr.io/open-webui/open-webui:ollama ``` 上述过程中 `--gpus all` 参数指定了要分配给容器的所有可用GPU资源,而 `-v` 则用来挂载宿主机路径至目标位置以便持久保存数据。 ### 部署 DeepSeek-V3 大规模预训练模型 当确认前述准备工作均已就绪之后,即可着手加载所的大型语言模型(LLMs)之一 —— DeepSeek V3 。此过程通常涉及从远程仓库获取相应的权重参数集,并将其应用于现有的框架之中。 假设已经具备了合法访问权限及相关密钥信息,那么可以通过 WebUI 提供的功能轻松实现这一点。具体而言,在浏览器地址栏键入 http://localhost:3000 即可进入管理面板页面,随后依照界面上给出的操作指引依次选定合适的选项卡、上传或导入对应的档案资料等动作直至最终完成整个部署流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值