deepseek吧 关注:116,899贴子:231,335
  • 12回复贴,共1

deepseek 671b 4bit 本地化实战

取消只看楼主收藏回复

硬件配置如图。花费74000人民币。
系统:win server 2022
模型装载:im studio
模型加载设定:上下文数值10000,可以满足一次性写2000-3000字文章的要求。
gpu卸载:默认2
CPU thread pool size:默认12
模型保存在内存打开
评估批处理大小默认512
专家默认数8
其他全部关闭
chat客户端:cherry studio(默认有很多助手提示词包括魅魔)
测试速度3.9-4tps
bios设置:smt关
512axm 关
nsp=1
win➕r 输入 MSConfig, 在引导中高级选项选处理器个数32。


IP属地:北京来自iPhone客户端1楼2025-03-07 14:33回复
    现在问题来了,win系统下安装kt构架,在编译到flash att这步卡住了,转圈一小时。不知道哪里出问题了。
    cuda tools安装的是12.4
    Python3.12
    torch2.6
    ---
    现在想安装Ubuntu lts,win下划了1t出来作为u系统的安装区,用rifus刻录好u盘Iso后,u盘引导可以出Ubuntu的安装logo,然后在进入选择硬盘的画面出来前就卡住了,键盘没有死机,但是就是啥东西都不出来。这下两条路都堵死了。


    IP属地:北京来自iPhone客户端2楼2025-03-07 14:42
    回复
      广告
      立即查看
      来总结今晚的战报了。哎,没有花钱的不是。小黄鱼上氪了380多找了个大佬。
      大佬给出的方案是,win系统下bug太多很难跑的通,于是虚拟了个Ubuntu,一切都在虚拟机下搞定,就这么简单。擦~
      ktransformers编译完全后。
      conda activate kt
      #激活一下kt
      export HF_ENDPOINT="https://hf-mirror.com"
      PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True ktransformers \
      --model_path deepseek-ai/DeepSeek-R1 \
      --gguf_path /home/dministrator/models/DeepSeek-R1-Q4_K_M \
      --max_new_tokens 8192 \
      --cpu_infer 92 \
      --cache_q4 true \
      --force_think \
      --temperature 0.6 \
      --top_p 0.95 \
      --host 127.0.0.1 \
      --port 6006
      #设置kt拉取deepseek r1 671b 4bit模型,然后就是上下文数默认32k,一次性最大生成tokens数8192tokens,推理使用cpu核心数92,开启深度思考,开启本地127.0.0.1:6000端口的api调用
      这就完事了,接着随便用什么chat客户端里找类似openai的api调用,复制上面的ip端口/v1 ,秘钥随便写,这就搞定了。如果调用不了,那就看看本地的接入防火墙端口是不是没打开6000的端口。
      测试下来,速度在6-7tps。。。在win下基本算是能用了


      IP属地:北京8楼2025-03-08 03:23
      收起回复
        ktransformers到底是个啥,有些人说是优化工具有些人说框架,都对。个人的感觉是这就是个类似ollama,lm的模型装载库。
        kt这个库不光可以优化deepseek,其他很多开源模型也在逐渐支持,但是它好像是不能同时装载ds和文本向量化模型的。
        装载ds的时候可以看到kt把ds分割成60层,然后把推理的层挨个交给内存装载,而内存因为设定交互的原因(类似组raid硬盘)也可以将一层模组绑定在一条内存栈内(我是这么理解的,可能不对),然后用CPU去带动内存上的模型推理运算。剩下的只有一两层需要长上下文相关的模型放在了gpu上运算。
        同im一样,可以分层装载模型的设定,只是im是可视化操作,kt是命令行操作,im没有指定CPU也要干推理的活,kt指定了,im可以可视化一键设置局域网内开放端口调用api,kt只能通过命令行实现局域网内开端口api调用功能。
        明明这些可以做到集成可视化窗口的,偏偏做成了Linux下命令行的风格。要我说kt才是老黄家计算显卡的杀手,有了kt,制约大模型推理速度的不再是昂贵的计算显卡成本了,只剩下:内存够不够大,内存mbt频率够不够快,CPU速度够不够快,CPU线程带宽够不够快。我组个12条4800的ddr5 64g条总共也才2万,和一张4090差不多价,但是怎么都比a100便宜的多吧,


        IP属地:北京来自iPhone客户端9楼2025-03-08 07:48
        收起回复

          win下的kt构架671b 4bit,上下文6000,10tps,
          对比同型号配置的ubuntu下kt构架671b 4bit,上下文6000,速度是14tps。
          win下严重缩水。


          IP属地:北京16楼2025-03-10 09:50
          回复
            好的,我继续来更新了。因为kt是安装在win的wsl2下的ubuntu下的,嵌套了两层壳子,依然有这速度,我其实挺满意的,其实Ubuntu下也是要用一层anaconda或者其他什么的虚拟环境的壳子来构建kt。
            而kt给我的感觉就是一个纯粹的ims或者vlm或者ollama的ai装载库,只是他的优化更牛,但是缺点也很明显。
            1.kt不支持多路并发
            2.kt没有图形界面ui,比起ims来说,构建的门槛太高了
            3.win下wsl2本身就是个虚拟环境,如果还要再安装docker,docker下再安装anythingllm web或者openwebai,实在太拖累
            4.kt不支持载入ds的同时再载入nomic text或者bgem3这些嵌入ai作为知识库向量化的工具
            屁话了这么多,我这次更新想做的只有一件事,让wsl下的kt deepseek可以在局域网内调用api。而上次发出来的载入ds的kt命令有点问题,嗯,用了127.0.0.1的ip,而wsl下一个虚拟环境一个ip,意思是wsl下的Ubuntu和docker都有独立的虚拟ip,172.XX.XX.XX什么的。不做映射端口,导致局域网内无法穿透。我查了半天网上也没有wsl2下安装kt做局域网api调用的案例,只能找大牛来帮忙了。方法如下:
            1.wsl setting中设置网络模式为nat,主机地址环回记得选关闭,尽力进行DNS分析关闭,其他都选打开。
            2.win防火墙设置入站规则,6006端口任意程序接入。
            3.进入wsl2,cmd或者powershell命令行输入:
            $wsl_ip = (wsl hostname -I).Trim()
            netsh interface portproxy add v4tov4 listenport=6006 listenaddress=0.0.0.0 connectport=6006 connectaddress=$wsl_ip
            #将wsl环境下任何ip的6006端口,都映射为win系统的0.0.0.0的6006端口。每次重启电脑后都要在wsl2下输入这些。
            4.进入wsl2下的ubuntu系统,激活kt框架,输入命令:
            export HF_ENDPOINT="https://hf-mirror.com"
            PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True ktransformers \
            --model_path deepseek-ai/DeepSeek-R1 \
            --gguf_path /home/dministrator/models/DeepSeek-R1-Q4_K_M \
            --max_new_tokens 6192 \
            --cpu_infer 91 \
            --cache_q4 true \
            --temperature 0.6 \
            --top_p 0.95 \
            --host 0.0.0.0 \
            --port 6006
            5.在powershell中输入ipconfig,查看本机ip4地址192.168.0.XX。
            6.然后在本机也好,局域网内其他机器也好,用任何chat客户端,都可以选择类似openai的方式调用了
            7.然后向量化模型,那就只能另一台电脑或者服务器上安装ims载入bgem3或者nomic text来实现了。



            IP属地:北京20楼2025-03-11 01:18
            回复
              接下来碰到难题了,CHAT客户端接入KT API后,每次读取向量化后的数据库,KT都会提示CUDA超出内存(爆显存),无语了。
              我尝试KT载入ds时上下文设置为100K(KT说他们最高支持136K优化上下文速度)
              原先提问太长造成错误反馈的现象恢复正常了,说明知识库和上下文长度没什么关系。
              尝试设置一次性吐出token数修改,额,也不行。奇怪了。有没有可能是向量化模型bge或者nomic的故障呢?


              IP属地:北京23楼2025-03-11 13:40
              回复
                散了吧,kt只有shell下的chat窗口支持128k上下文,api服务只支持1k上下文,不支持多路并发。官方0.2.3版说明文档里说的。半成品,哎。


                IP属地:北京来自iPhone客户端24楼2025-03-12 17:25
                收起回复
                  广告
                  立即查看
                  继续更新,kt 0.2.3 中有一个依赖,在查看他支持长上下文时有单独的篇章提到。
                  triton,安装好后重新编译,Ok了,api模式下4096的上下文和知识库都支持了,显存也保持在13.5G的水平。
                  之后开始继续折腾,阿B那边有个UP叫 九天,他制作了ktransformers和unsloth的混合框架,实现的功能有几个:
                  1.支持deepseek 671b 1.58bit版本的加载(原版kt 0.2.3只支持deepseek 671b 4bit)
                  2.需求的硬件门槛更低,有1个16g显存的显卡就够了,内存要大一点,60G。个人电脑上万元级电脑肯定是可以配置了。
                  3.api模式伪并发,因为是排队模式,所以是伪,但是原版kt0.2.3并不支持并发。据说下周kt更新可以支持更多的显卡类型,更多的cpu,更多模型,以及并发。期待吧。
                  >>>>>>>>>>
                  好了,下面是我找大佬帮我编译后加载1.58bit版的实测效果,8tps。10来人的小企业,应该差不多够使使了。




                  IP属地:北京25楼2025-03-13 18:30
                  回复
                    忘记说了,添加加载命令改了下,1.58b和4b两个模型放在同一个文件夹下,设置不同的gguf_path路径就可以选择加载哪个。九天大佬的源码网盘我就不放了,有兴趣的自己找他视频下面扫码要把。
                    export HF_ENDPOINT="https://hf-mirror.com"
                    PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True ktransformers \
                    --model_path deepseek-ai/DeepSeek-R1 \
                    --gguf_path /home/dministrator/models/deepseek-r1-671b-Q1 \
                    --max_new_tokens 4096 \
                    --total_context 32768 \
                    --cache_lens 32768 \
                    --cpu_infer 91 \
                    --cache_q4 true \
                    --temperature 0.6 \
                    --top_p 0.95 \
                    --host 0.0.0.0 \
                    --port 6006


                    IP属地:北京26楼2025-03-13 18:34
                    回复
                      wsl --export Ubuntu d://ubuntu-22.04.tar
                      #将wsl下的乌班图导出到d盘形成一个文件
                      wsl --import ubuntu-22.04 D:\WSL D:\ubuntu-22.04.tar --version 2
                      #wsl --import 导入
                      #ubuntu-22.04 导入系统名
                      #D:\WSL 导入后系统运行的目录
                      #D:\ubuntu-22.04.tar 将要导入的系统文件
                      #--version 2 导入wsl版本为v2
                      意味着我可以把我编译好的kt连带虚拟的ubuntu系统导出到别的电脑的wsl2下使用了。


                      IP属地:北京27楼2025-03-15 16:52
                      回复
                        关于苹果的M3U 512G,以下是外站视频制作者关于这个prefill问题的回答:
                        Here it is using Apple MLX with DeepSeek R1 671B Q4 16K was going OOM - Prompt: 13140 tokens, 59.562 tokens-per-sec - Generation: 720 tokens, 6.385 tokens-per-sec - Peak memory: 491.054 GB 这下用的是苹果MLX,配的是DeepSeek R1 671B Q4的配置。 16K的内存差点撑不住,OOM警告! 提示词:13140个token,处理速度59.562 tokens/秒 生成内容:720个token,速度降到6.385 tokens/秒 峰值内存占用:491.054 GB
                        这才13k的上下文,生成速度才6tps,16k就要爆内存。
                        这哪有我这服务器靠谱哦,目前在32k上下文前提下,同671b 4bit模型也是6-8tps。还说啥。


                        IP属地:北京28楼2025-03-15 18:28
                        回复
                          更多的加载模式下的测试如下:




                          IP属地:北京32楼2025-03-20 00:10
                          回复