最近在研究基于Intel A770的多卡部署DeepSeek 32B的方案,碰到一些坑,记录一下。

首先是基于x99芯片的老旧Intel Xeon主板方案,速度跑不起来,每秒只有2-3个Token。
其次是基于B780芯片的AMD主板方案,单卡速度可跑到40个Token左右,但双卡,模型跑不起来。

 

一、操作系统版本

Intel官方推荐的操作系统是ubuntu-22.04.1-desktop-amd64.iso ,我测试过ubuntu-22.04.1-desktop-amd64.iso 与ubuntu-22.04.5-desktop-amd64.iso ,都没有问题。

 

二、显卡检测

输入lspci 命令,可以查找Intel的显卡,说明硬件接电没有问题

lspci |grep 56a0

三、安装SSH\VIM\LRZSZ

openssh-server是给SSH远程管理用的,vim是编辑文件用的,lrzsz是上传下载小于4G文件用的

sudo apt install openssh-server vim lrzsz

四、安装arc a770驱动

wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg
~$ echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy/lts/2350 unified" | sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
sudo apt update

五、调整内核

安装完ubuntu,内核一般会是6.8.x,比官方的6.5.0要高,故我们要降内核到官方指定版本6.5.0-35

~$ sudo apt-get install -y linux-image-6.5.0-35-generic linux-headers-6.5.0-35-generic linux-modules-6.5.0-35-generic linux-modules-extra-6.5.0-35-generic
~$ sudo apt install intel-i915-dkms
~$ sudo vim /etc/default/grub
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.5.0-35-generic"
~$ sudo update-grub
~$ sudo reboot

六、安装Intel计算、媒体、显示运行库

sudo apt install -y intel-opencl-icd intel-level-zero-gpu level-zero intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo

七、调整当前用户权限

官方文档$(USER)内容是错误的,我已纠正,也有其它博文把$(USER)手工替换为真实用户名

sudo gpasswd -a $USER render
sudo newgrp render

八、验证驱动

如果使用以下命令不能显示内容的话,退出当前用户登录后,再重新登入一下

clinfo | grep "Driver Version" 
Driver Version 23.43.27642.67

九、xpu-smi监控工具安装

wget https://github.com/intel/xpumanager/releases/download/V1.2.27/xpu-smi_1.2.27_20240103.051106.5eeb3f13.u22.04_amd64.deb --no-check-certificate
~$ sudo apt install ./xpu-smi_1.2.27_20240103.051106.5eeb3f13.u22.04_amd64.deb 
~$ sudo xpu-smi discovery

十、设置docker仓库

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc


echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

十一、安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

十二、Docker镜像加速

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://mirrors.tuna.tsinghua.edu.cn",
"http://mirrors.sohu.com",
"https://ustc-edu-cn.mirror.aliyuncs.com",
"https://ccr.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://docker.awsl9527.cn"
]
}
EOF


sudo systemctl daemon-reload && systemctl restart docker

十三、Docker测试

sudo docker run hello-world

十四、安装vLLM的docker版本

docker pull intelanalytics/ipex-llm-serving-xpu:2.2.0-b11

十五、下载deepseek模型

git clone https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B

十六、制作启动脚本

#!/bin/bash
export DOCKER_IMAGE=intelanalytics/ipex-llm-serving-xpu:2.2.0-b11
export CONTAINER_NAME=llm-backend

docker rm -f $CONTAINER_NAME

sudo docker run -itd \
--privileged \
--net=host \
--device=/dev/dri \
--name=$CONTAINER_NAME \
-v /model:/model \
-e no_proxy=localhost,127.0.0.1 \
--shm-size="30g" \
$DOCKER_IMAGE


#!/bin/bash
model="/model/DeepSeek-R1-Distill-Qwen-14B"
served_model_name="DeepSeek-R1-Distill-14B"
gpu_num=2
#low_bit=asym_int4


export CCL_WORKER_COUNT=2
export SYCL_CACHE_PERSISTENT=1
export FI_PROVIDER=shm
export CCL_ATL_TRANSPORT=ofi
export CCL_ZE_IPC_EXCHANGE=sockets
export CCL_ATL_SHM=1

export USE_XETLA=OFF
export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=2
export TORCH_LLM_ALLREDUCE=0

export CCL_SAME_STREAM=1
export CCL_BLOCKING_WAIT=0

#source /opt/intel/1ccl-wks/setvars.sh
#export CCL_DG2_ALLREDUCE=1
#export LD_LIBRARY_PATH=/opt/intel/1ccl-wks/lib:$LD_LIBRARY_PATH


python -m ipex_llm.vllm.xpu.entrypoints.openai.api_server \
--served-model-name $served_model_name \
--port 8001 \
--model $model \
--trust-remote-code \
--gpu-memory-utilization 0.9 \
--device xpu \
--dtype float16 \
--enforce-eager \
--load-in-low-bit fp8 \
--max-model-len 8000 \
--max-num-batched-tokens 8000 \
--max-num-seqs 32 \
--api-key intel123 \
--tensor-parallel-size 2 \
--disable-async-output-proc \
--distributed-executor-backend ray

#!/bin/bash
export DOCKER_IMAGE=ghcr.io/open-webui/open-webui:main
export CONTAINER_NAME=llm-frontend

docker rm -f $CONTAINER_NAME

docker run -itd \
--net host \
-e OPENAI_API_KEY=intel123 \
-e OPENAI_API_BASE_URL=http://127.0.0.1:8001/v1 \
-v open-webui:/app/backend/data \
--name $CONTAINER_NAME \
--restart always $DOCKER_IMAGE

十六、导入openewbui应用

sudo docker load -i openwebui.tar.gz

十七、启动服务

~$ sudo bash create-llm.sh
~$ sudo docker exec llm-backend bash /model/ds.sh
~$ sudo bash create-ui.sh

如下日志表明 DeepSeek 推理服务已启动成功:

image-20250505085227387

image-20250505084830302

十八、DeepSeek使用

#浏览器访问以下地址,填写邮箱与密码注册一下(系统提示帐户是存在本地的)
http://192.168.110.189:8080/

进入到OpenWebUI界面后,在左上角,设置一下大模型为deepSeek-R1-Distill-14B,然后就可以开启对话了。目前1秒约2-3个token,监控发现没有使用CPU。

 

 

 

 

 

 

 

声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。