博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。


博客内容主要围绕:
       5G/6G协议讲解
       高级C语言讲解
       Rust语言讲解



文章目录

  • 本地部署 KTransformers并加载大模型
    • 一、搭建运行环境
    • 二、本都部署ktransformers
    • 三、常见问题
      • 3.1 Building wheel for ktransformers (pyproject.toml) did not run successfully
      • 3.2 No module named 'sched_ext'
      • 3.3 出现很多“undefined symbol”的错误提示
      • 3.4 提示 libstdc++.so.6: version `GLIBCXX_3.4.30' not found
    • 四、本地部署DeepSeek
      • 4.1 Deepseek-V3-671B-Q4_K_M
      • 4.2 相关参数解释
    • 五、总结

本地部署 KTransformers并加载大模型

       KTransformers,发音为Quick Transformers,旨在通过高级kernel优化和并行策略来增强transformer体验。KTransformers是一个灵活的、以python为中心的框架,其核心是可扩展性。通过使用一行代码实现和注入优化模块,用户可以访问与transformer兼容的接口,兼容OpenAI和Ollama的RESTful api,甚至是简化的类似聊天gpt的web UI。

在这里插入图片描述

一、搭建运行环境

  1. CUDA 12.1及以上版本,如果没有安装可以从这里安装,安装完成后将CUDA添加到PATH环境变量:

    # Adding CUDA to PATH
    if [ -d "/usr/local/cuda/bin" ]; thenexport PATH=$PATH:/usr/local/cuda/bin
    fiif [ -d "/usr/local/cuda/lib64" ]; thenexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64# Or you can add it to /etc/ld.so.conf and run ldconfig as root:# echo "/usr/local/cuda-12.x/lib64" | sudo tee -a /etc/ld.so.conf# sudo ldconfig
    fiif [ -d "/usr/local/cuda" ]; thenexport CUDA_PATH=$CUDA_PATH:/usr/local/cuda
    fi
    
  2. 安装cmake(cmake>=3.25)
    Ubuntu 22.04 LTS或更高版本的默认CMake版本可能不支持更新的CUDA语言方言(例如CUDA 20)。这可能会导致错误,如目标“cmTC_xxxxxx”需要语言方言“CUDA20”,但CMake不知道使用哪个编译标志来启用它。要解决这个问题,安装一个较新的CMake版本,例如,通过添加Kitware APT存储库。

    sudo apt-get update 
    sudo apt-get install build-essential cmake ninja-build patchelf
    
  3. 安装Miniconda3或者Anaconda3
    安装Miniconda3或Anaconda3,用Python=3.11创建一个虚拟环境来运行我们的程序。假设您的Anaconda安装目录是~/anaconda3,您应该确保Anaconda使用的GNU C++标准库的版本标识符包括GLIBCXX_3.4.32

    conda create --name ktransformers python=3.11
    conda activate ktransformers # you may need to run ‘conda init’ and reopen shell firstconda install -c conda-forge libstdcxx-ng # Anaconda provides a package called `libstdcxx-ng` that includes a newer version of `libstdc++`, which can be installed via `conda-forge`.strings ~/anaconda3/envs/ktransformers/lib/libstdc++.so.6 | grep GLIBCXX
    
  4. 安装PyTorch,packaging,ninja

    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
    pip3 install packaging ninja cpufeature numpy
    
  5. 安装相应版本的 flash-attention

  6. 如果您想使用numa支持,不仅需要设置USE_NUMA=1,还需要确保已经安装了libnuma-dev

    sudo apt-get install libnuma-dev
    
  7. 如果您想使用多并发版本,请安装以下依赖项:

    sudo apt install libtbb-dev libssl-dev libcurl4-openssl-dev libaio1 libaio-dev libgflags-dev zlib1g-dev libfmt-dev
    

二、本都部署ktransformers

  1. 下载源代码并编译,

    git clone https://github.com/kvcache-ai/ktransformers.git
    cd ktransformers
    git submodule update --init --recursive
    
  2. 对于 linux 执行下面的命令

    • 简单安装:
    bash install.sh
    
    • 有两个CPU和1T RAM的大佬:
    # Make sure your system has dual sockets and double size RAM than the model's size (e.g. 1T RAM for 512G model)
    apt install libnuma-dev
    export USE_NUMA=1
    bash install.sh # or #make dev_install
    
    • 有500G RAM并希望开启多并发:
    USE_BALANCE_SERVE=1 bash ./install.sh
    
    • 有两个CPU和1T RAM并希望开启多并发的大佬:
    USE_BALANCE_SERVE=1 USE_NUMA=1 bash ./install.sh
    
  3. 对于 Windows 执行下面的命令

    install.bat
    

三、常见问题

3.1 Building wheel for ktransformers (pyproject.toml) did not run successfully

CUDA环境变量没有正确配置,(解决方法)[https://github.com/kvcache-ai/ktransformers/issues/1104#issuecomment-2790554736]。

3.2 No module named ‘sched_ext’

升级CMake版本,或者升级CUDA版本,相关(解决方法)[https://github.com/kvcache-ai/ktransformers/issues/1017]。

3.3 出现很多“undefined symbol”的错误提示

尝试不同的flash_attn版本,或者直接源码编译,相关(解决方法)[https://github.com/kvcache-ai/ktransformers/issues/715]。

3.4 提示 libstdc++.so.6: version `GLIBCXX_3.4.30’ not found

可以尝试下面的命令,相关(解决方法)[https://github.com/kvcache-ai/ktransformers/issues/402]:

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6

四、本地部署DeepSeek

       运行下面的命令,程序会自动从HuggingFace中下载gguf格式的模型,并自动部署。如果没有现在需要自己去HuggingFace找到想要部署模型的gguf格式,并在后放入项目根目录中,同时还需要下载模型卡放入到一个单独的文件夹下面,用来解析模型

4.1 Deepseek-V3-671B-Q4_K_M

python ktransformers/server/main.py \
--model_path 模型卡路径  \
--gguf_path gguf格式的模型路径  \
--cpu_infer 65  \
--optimize_config_path  ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-serve.yaml \
--port 10002 \
--chunk_size 256 \
--max_new_tokens 1024 \
--max_batch_size 4 \
--port 10002 \
--cache_lens 32768 \
--backend_type balance_serve

4.2 相关参数解释

参数参数含义
max_new_tokens每个请求生成的最大令牌数量
cache_lens调度程序分配的kvcache的总长度。所有请求共享一个kvcache空间
max_batch_size引擎在一次运行中处理的请求(预填充+解码)的最大数量。(仅balance_serve支持)
chunk_size引擎在单次运行中处理的令牌的最大数量。对应32768个令牌,占用的空间将在请求完成后释放
backend_typeBalance_serve是v0.2.4版本中引入的多并发后端引擎。最初的单并发引擎是ktransformers
model_pathsafetensor的config配置文件的路径(只需要config文件,不需要safetensor模型文件)
force_think开启DeepSeek R1的深度思考
gguf_pathgguf文件路径

五、总结

       项目可以在受限资源上利用注入脚本实现CPU+GPU+DISK的大模型部署。但是本地搭建比较复杂,复杂点主要包括运行环境搭建复杂,高效的注入脚本编写复杂,需要对模型架构有深入理解。并发能力有限,很难实现高并发低时延的问答效果,只能作为实验测试使用。

注入脚本相关的内容可以参考(官方项目介绍)[https://github.com/kvcache-ai/ktransformers]



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93459.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93459.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93459.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TDengine IDMP 高级功能(3. 概念解释)

枚举集 为提升数据的可阅读性,IDMP 为数据提供枚举类型。您可以将一些整型数定义为一具有可读性的字符串。与其他软件一样,您可以定义多个枚举集,每个枚举集可以有多个枚举量。您可以增加、删除、修改、查询枚举集与枚举量。 但独特的是&am…

CUDA 入门教程(GPT优化版)

学习路径 一、环境准备与快速入门 搭建开发环境 ○ 安装 CUDA Toolkit,适用于 Windows(如 Visual Studio)或 Linux,确保你的设备为 NVIDIA GPU 并支持 CUDA。(wholetomato.com) ○ 如果你偏好轻量工具,也可用 VS Code + Nsight 开发环境进行 CUDA 编程。(wholetomato.com)…

react项目性能优化的hook

前言:在项目中开发中,性能优化是很重要的,react有提供专门的hook,useMemo 和useCallback 这里说一说他们。区别:特性useMemouseCallback返回值缓存一个 值(计算结果)缓存一个 函数依赖变化时重新…

Docker(springcloud笔记第三期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解 目录镜像与容器一些命令与镜像命名规范数据卷自定义镜像Dockerfile镜像与容器 当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image),镜像不仅包含应用本身&…

MySQL定时任务详解 - Event Scheduler 事件调度器从基础到实战

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

redis存储原理与对象模型

redis中的不同线程 redis单线程是指什么? redis的所有命令处理都在同一个线程中完成 redis为什么采用单线程? redis中存在多种数据结构存储value,如果采用多线程,加锁会很复杂、加锁力度不阿红控制,同时&#xff0c…

基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统

基于微信小程序的家教服务平台的设计与实现/基于asp.net/c#的家教服务平台/基于asp.net/c#的家教管理系统

安全审计-iptales防火墙设置

文章目录一、iptales防火墙设置1.ip规则设置2.ip端口规则设置3.删除规则4.INPUT默认设置5.ping、本地访问规则6.保存还原规则7.查看清除规则一、iptales防火墙设置 1.ip规则设置 #允许ip访问本服务器 iptables -I INPUT -s 192.168.205.129 -p tcp -j ACCEPT#允许某IP或某网段…

Linux小白加油站,第二周

1.grep命令中哪个选项可以忽略大小写进行搜索?grep -i 2.如何用grep命令查找包含”error关键字的日志文件并返回文件名?grep -lr3.解释grep命令中^f...d$这个表达式的含义^f:以f开头..:任意两个字符d$:以d结尾4.如何过滤掉文件中的注释行以…

【前端基础】19、CSS的flex布局

一、FlexBox概念 FlexBox翻译为弹性盒子。 弹性盒子是一种用于按行或按列布局元素的一维布局方式。元素可以膨胀以填充额外的空间,收缩以适应更小的空间。我们使用FlexBox来进行布局的方案称为flex布局。二、flex布局的重要概念 两个重要的概念 开启flex布局的元素叫…

Effective C++ 条款46:需要类型转换时请为模板定义非成员函数

Effective C 条款46:需要类型转换时请为模板定义非成员函数核心思想:当模板类需要支持隐式类型转换时,应将非成员函数声明为友元并定义在类内部(或通过辅助函数实现),以绕过模板参数推导的限制,…

用Python对机器学习数据进行缩放

许多机器学习算法期望数据被一致地缩放。 在为机器学习扩展数据时,你应该考虑两种常用的方法。 在这个教程中,您将了解如何为机器学习重新缩放您的数据。阅读完这个教程后,您将知道: 如何从头开始对您的数据进行标准化。如何从…

Application-properties 配置大全

SpringBoot - application.properties 配置大全 SpringBoot项目最重要也是最核心的配置文件就是application.properties,所有的框架配置都需要在这个配置文件中说明,以下配置不会的可以进行查阅并修改 #SPRING CONFIG(ConfigFileA…

MXFP4量化:如何在80GB GPU上运行1200亿参数的GPT-OSS模型

大型语言模型(Large Language Models, LLMs)如GPT-OSS、GPT-4、LLaMA和Mixtral的快速发展显著提升了人工智能的能力边界,但同时也带来了严峻的内存资源挑战。以1200亿参数的模型为例,在FP16精度下仅权重存储就需要约240GB的内存空…

Unity进阶--C#补充知识点--【Unity跨平台的原理】了解.Net

来源于唐老狮的视频教学,仅作记录和感悟记录,方便日后复习或者查找一.什么是.Net.Net是指微软一整套技术体系的统称与代号包含的内容有:框架体系:.Net Frameword, .Net Core, Mono开发语言:C#&a…

论文浅尝 | 提高大型语言模型的数学推理能力的学习定理基本原理(AAAI2025)

笔记整理:兰雅榕,浙江大学硕士生,研究方向为知识图谱、大语言模型论文链接:https://ojs.aaai.org/index.php/AAAI/article/view/33662发表会议:AAAI 20251. 动机提高开源大型语言模型(LLM)的数学…

母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南

母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南 1. 引言 1.1 研究背景与意义 母猪姿态转换行为识别是智能养殖领域的重要研究方向,通过计算机视觉技术自动识别母猪的站立、躺卧、行走等姿态变化,对于监测母猪健康状态、评估福利水平…

K8S集群环境搭建(一)

虚拟机镜像 ubuntu 24 虚拟机网络 虚拟网络–配置 nat模式主机ip配置宿主机ip配置 10.0.0.12 master 2c 10.0.0.15 node1 10.0.0.16 node2 10.0.0.17 node3 10.0.0.20 registersudo vi /etc/netplan/00-installer-config.yaml # 替换为实际文件名 sudo netplan applynetwork:v…

css预编译器实现星空背景图

打造梦幻星空背景:用CSS预处理器轻松实现动态效果 星空背景能为网页增添神秘感和视觉吸引力。通过CSS预处理器(如Sass/Less)可以高效实现可定制化的星空效果,避免重复编写纯CSS代码。以下是 Vue3 组件皮肤具体实现方法和代码示例。…

焊接机器人保护气体效率优化

在现代工业制造领域,焊接机器人的应用日益广泛,而保护气体在焊接过程中起着至关重要的作用。如何优化保护气体的效率,成为焊接技术发展的一个关键考量因素。WGFACS节气装置的出现,为焊接机器人在保护气体效率优化方面带来了显著的…