【人工智能】本地部署 KTransformers并加載大模型筆記

博主未授權任何人或組織機構轉載博主任何原創文章,感謝各位對原創的支持!
博主鏈接

本人就職于國際知名終端廠商,負責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節氣裝置的出現,為焊接機器人在保護氣體效率優化方面帶來了顯著的…