大模型本地化过程
1| 环境准备
1 .1| nvidia-smi 命令查看GPU
不识别的话
使用
ubuntu-drivers devices命令来找出你的系统推荐的 NVIDIA 驱动程序;sudo apt install nvidia-driver-(使用推荐版本)
bashsudo apt install nvidia-driver-550安装NVIDIA Management Library,sudo apt install nvidia-utils-
bashsudo apt install nvidia-utils-550
1 .2| 安装nvidia 开发包
一般不需要独立安装,PyTorch等会自动编译进去。
bash
-- 查看使用的版本
nvcc --version
-- 查看安装包
apt list --installed | grep cuda
-- 自动匹配安装系统的稳定版
-- 如果嫌版本老,可以选择其它版本
sudo apt install nvidia-cuda-toolkit
可能系统安装了多个cuda 版本切换版本:
一般的安装目录是/usr/local ,查看验证
bash
cd /usr/local
-- 结果如下
-- bin cuda cuda-12 cuda-12.4 etc games include lib man sbin share src
修改cuda的版本
bash
-- 切换版本(换成自己需要的版本,此处是12.4)
export PATH=/usr/local/cuda-12.4/bin:$PATH
-- 保存
source ~/.bashrc
-- 再次执行,查看版本,显示12.4
nvcc --version
echo $PATH 来查看使用的路径信息
1 .3| 安装Anaconda3
-
下载依赖的包
bashapt install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 -
下载安装包(https://www.anaconda.com/download#Downloads)
bash-- 在合适的地方创建目录 mkdir anaconda3 cd anaconda3 wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh -
运行
bash-- 根据提示Enter 或者yes bash Anaconda3-2022.10-Linux-x86_64.sh -
激活安装
bashnano ~/.bashrc -- 添加环境变量 -- 在编辑器中进行编辑。 -- 按下 Ctrl+X。 -- 按下 Y 键确认保存。 -- 按下 Enter 键确认文件名不变。 export PATH="/home/user01/anaconda3/bin:$PATH" -- 保存 source ~/.bashrc -- 查看是否成功 conda --version
1 .4| 通过Anaconda设置Python环境
-
查看哪些Python版本可供使用
bashconda search "^python$" -
创建虚拟环境
conda create --name pv3.12.0 python=3.12.0 -
激活环境
bashconda activate pv3.12.0 -- 如果报错未初始化 conda init bash source ~/.bashrc -
校验
bash-- 就是上面选的版本3.12.0 python --version -
安装要使用的包
bashconda install --name pv3.12.0 numpy
其它操作
bash
-- 退出当前环境
conda deactivate
-- 删除掉环境
conda remove --name pv3.12.0 --all
1 .5| 安装docker
-
卸载老版本docker
bashapt-get remove docker docker-engine docker.io containerd runc -
更新软件包
bashsudo apt update sudo apt upgrade -
安装依赖(在ubuntu上的一些软件依赖包)
apt-get install ca-certificates curl gnupg lsb-release -
添加Docker官方GPG密钥
bashcurl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - -
添加Docker软件源
bashsudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" -
安裝docker
bashapt-get install docker-ce docker-ce-cli containerd.io -
配置用户组(默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo);可选
bashsudo usermod -aG docker $USER -
重启docker
bashsystemctl start docker -
校验成功
bashdocker version
1 .4| 安装xinference
选择docker安装
bash
# --shm-size 20g 设置共享内存,否则以启动vLLM启动模型会报错
docker run \
-it \
-d \
-e XINFERENCE_HOME=/home \
-e XINFERENCE_MODEL_SRC=modelscope \
-v /data/xinference:/home \
-p 9997:9997 \
--name xinference163 \
--gpus all \
--shm-size 20g \
xinference:v0.16.3-cpu \
xinference-local -H 0.0.0.0
1.5 langfuse 监控部署
bash
sudo docker run -d --name langfuse \
-e DATABASE_URL='postgresql://aigc_dev:yourpassword@192.168.3.55:5432/langfuse' \
-e NEXTAUTH_URL=http://192.168.4.136:3000 \
-e NEXTAUTH_SECRET=ZxSn \
-e SALT=yoursalt \
-p 3000:3000 langfuse:2.73.0
1.2 | 环境准备-错误
1.2.1 安装驱动报错
random number generator:RAND_load_file:Cannot open file:.../crypto/rand/randfile.c:106:Filename=/var/lib/shim-signed/mok/.rnd
这通常与 OpenSSL 的随机数生成器(RNG)尝试加载一个随机种子文件失败有关。
创建随机数种子文件: 你可以手动创建这个文件,填充一些随机数据。运行以下命令:
sudo dd if=/dev/urandom of=/var/lib/shim-signed/mok/.rnd bs=1024 count=1 sudo chmod 0400 /var/lib/shim-signed/mok/.rnd再次运行:sudo apt install nvidia-driver-555
1.2.2 ubuntu 依赖报错
Docker在ubuntu上依赖一些软件包,apt-get install ca-certificates curl gnupg lsb-release,报错。
执行
bash
-- 自动修复
sudo apt --fix-broken install
1.2.3 镜像拉取失败
配置镜像源,代理均拉取失败。通过阿里云私有仓
sudo docker pull xinference:latest-cpu
sudo docker run \
-it \
-d \
-e XINFERENCE_HOME=/home \
-e XINFERENCE_MODEL_SRC=modelscope \
-e HF_ENDPOINT=https://hf-mirror.com \
-v /data/xinference:/home \
-p 9997:9997 \
--gpus all \
--shm-size 20g\
--name xinference-v1.14 \
xprobe/xinference:v1.14.0-cp \
xinference-local -H 0.0.0.0
--auth-config /home/auth.json
{
"auth_config": {
"algorithm": "HS256",
"secret_key": "XXXXX",
"token_expire_in_minutes": 30
},
"user_config": [
{
"username": "admin",
"password": "yourpassword",
"permissions": [
"admin"
],
"api_keys": [
"sk-72tkvXXXXX",
"sk-ZOTXXXXX"
]
},
{
"username": "user",
"password": "your password",
"permissions": [
"models:list",
"models:read"
],
"api_keys": [
"sk-XXXX",
"sk-XXXX"
]
}
]
}