Ubuntu 22.04 配置LLM大语言模型环境

本文介绍了清洁安装的Ubuntu Server 22.04 LTS安装NVIDIA显卡驱动、CUDA 12.1、cuDNN的方法及ChatGLM3、百川2、FastChat等大语言模型的部署使用方法。

安装NVIDIA驱动

禁用nouveau

sudo vi /etc/modprobe.d/blacklist.conf

尾部追加一行

blacklist nouveau

执行并重启系统

sudo update-initramfs -u
reboot

检查nouveau是否关闭成功,应当无输出

lsmod | grep nouveau

安装535驱动

sudo apt update
sudo apt install nvidia-driver-535 -y

当然,也可以查询推荐驱动,选择recommended的版本安装:

ubuntu-drivers devices

装完后执行nvidia-smi验证,应该有正确的输出。

安装CUDA12.1

下载并执行:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
chmod +x cuda_12.1.0_530.30.02_linux.run
sh cuda_12.1.0_530.30.02_linux.run

执行后要等一会加载,然后进入交互式界面,按如下步骤操作:

  • 提示已经存在驱动…选择continue
  • 阅读并接受协议,输入accept回车
  • 上下光标选中- [X] Driver列,按空格以取消勾选驱动,再选择Install回车
  • 等待安装完成

编辑环境变量:

vi ~/.bashrc
尾部追加:
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
执行:
source ~/.bashrc 

验证:

nvcc --version
systemctl status nvidia-persistenced

均应输出有效信息。

安装NVIDIA-Docker(可选)

官网文档链接:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

  • 添加源并安装:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit nvidia-container-runtime
  • 在安装好Docker后,执行如下操作以配置Docker:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
  • 执行以下命令验证
docker run --gpus all -it --name nvtest nvidia/cuda:12.3.1-base-ubuntu22.04 /bin/sh
nvidia-smi

附:

  • 使用所有GPU

    docker run --gpus all nvidia/cuda:12.3.1-base-ubuntu22.04 nvidia-smi

  • 使用两个GPU

    docker run --gpus 2 nvidia/cuda:12.3.1-base-ubuntu22.04 nvidia-smi

  • 指定GPU运行

    docker run --gpus '"device=1,2"' nvidia/cuda:12.3.1-base-ubuntu22.04 nvidia-smi

    docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:12.3.1-base-ubuntu22.04 nvidia-smi

安装cuDNN(可选)

官网文档链接:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-deb

记得安装zlib:

sudo apt-get install zlib1g

安装Miniconda

  • 下载并安装miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
  • conda和pip换源
conda config --set show_channel_urls yes
vi ~/.condarc

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
ssl_verify: false

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

使用ModelScope下载模型到本地

  • 新建一个下载模型的脚本download_model.py
import sys
from modelscope import snapshot_download

if len(sys.argv) < 2:
    print("Usage: python download_model.py <model_name>")
    sys.exit(1)

model_name = sys.argv[1]
model_dir = snapshot_download(model_name, revision="master")
print(model_dir)
  • 再新建一个shell脚本dl_model.sh用于拉起模型下载脚本
#!/bin/bash

if [ "$#" -ne 1 ]; then
    echo "Usage: <model_name>"
    exit 1
fi

python download_model.py "$1"

设置代理脚本(加速github等)

  • 设置代理setproxy
#!/bin/sh

# for terminal
export proxyserveraddr=192.168.114.114
export proxyserverport=7890
export HTTP_PROXY="http://$proxyserveraddr:$proxyserverport/"
export HTTPS_PROXY="https://$proxyserveraddr:$proxyserverport/"
export FTP_PROXY="ftp://$proxyserveraddr:$proxyserverport/"
export SOCKS_PROXY="socks://$proxyserveraddr:$proxyserverport/"
export NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com,可以新增你想过滤的ip段;"
export http_proxy="http://$proxyserveraddr:$proxyserverport/"
export https_proxy="https://$proxyserveraddr:$proxyserverport/"
export ftp_proxy="ftp://$proxyserveraddr:$proxyserverport/"
export socks_proxy="socks://$proxyserveraddr:$proxyserverport/"
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,可以新增你想过滤的ip段;"

# for apt-get
cat <<-EOF| sudo tee /etc/apt/apt.conf
Acquire::http::proxy "http://$proxyserveraddr:$proxyserverport/";
Acquire::https::proxy "https://$proxyserveraddr:$proxyserverport/";
Acquire::ftp::proxy "ftp://$proxyserveraddr:$proxyserverport/";
Acquire::socks::proxy "socks://$proxyserveraddr:$proxyserverport/";
EOF
  • 取消代理unsetproxy
#!/bin/sh
unset proxyserveraddr
unset proxyserverport
unset HTTP_PROXY
unset HTTPS_PROXY
unset FTP_PROXY
unset SOCKS_PROXY
unset NO_PROXY
unset http_proxy
unset https_proxy
unset ftp_proxy
unset socks_proxy
unset no_proxy
gsettings reset org.gnome.system.proxy ignore-hosts
echo -n ""|sudo tee /etc/apt/apt.conf
  • 使用方法:
source setproxy
source unsetproxy

部署ChatGLM3

  1. 创建虚拟环境
conda create -n chatglm python=3.11
  1. 激活,开搞
conda activate chatglm
git clone https://github.com/THUDM/ChatGLM3.git
pip install modelscope
pip install -r requirements.txt
  1. 安装pytorch
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
  1. 下载模型
dl_model.sh ZhipuAI/chatglm3-6b

下载的模型路径为/root/.cache/modelscope/hub/ZhipuAI/chatglm3-6b

  1. 编写composite_demo启动脚本(openai_api_demo等同理)
cd /root/ChatGLM3/composite_demo
vi start.sh

以下是start.sh的内容

export MODEL_PATH=/root/.cache/modelscope/hub/ZhipuAI/chatglm3-6b
streamlit run main.py

如果要使用composite_demo的code interpreter,首次启动前记得执行:

ipython kernel install --name chatglm3 --user

部署百川2

前面的虚拟环境准备、代码库拉取、模型下载等第1~4节和ChatGLM3差不多。

百川2的git仓库地址是https://github.com/baichuan-inc/Baichuan2.git

魔搭的模型名是baichuan-inc/Baichuan2-7B-Chat(或13B)

配置:修改启动脚本的init_model函数

vi Baichuan2/web_demo.py

web_demo.py的修改后函数如下:

@st.cache_resource
def init_model():
    model = AutoModelForCausalLM.from_pretrained(
        "/root/.cache/modelscope/hub/baichuan-inc/Baichuan2-7B-Chat",
        torch_dtype=torch.float16,
        device_map="auto",
        trust_remote_code=True
    )
    model.generation_config = GenerationConfig.from_pretrained(
        "/root/.cache/modelscope/hub/baichuan-inc/Baichuan2-7B-Chat"
    )
    tokenizer = AutoTokenizer.from_pretrained(
        "/root/.cache/modelscope/hub/baichuan-inc/Baichuan2-7B-Chat",
        use_fast=False,
        trust_remote_code=True
    )
    return model, tokenizer

如果要以int8量化模式运行,在torch_dtype=torch.float16,后添加一行load_in_8bit=True,即可。

执行:streamlit run web_demo.py

搭建FastChat服务

  • 搭建FastChat环境
conda create -n fastchat python=3.11
conda activate fastchat
git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip3 install --upgrade pip
pip3 install -e ".[model_worker,webui]"
  • 写一组FastChat启动脚本:

    fastchat.sh(使用anaconda就把miniconda3换成anaconda3)

#!/bin/bash 
source ~/miniconda3/etc/profile.d/conda.sh
conda activate fastchat
if [ $? -ne 0 ]; then
    echo "Failed to activate Anaconda environment 'fastchat'."
    exit 1
fi
/root/fastchat-process/main.sh "$@"
  • 创建相关文件和文件夹
mkdir ~/fastchat-process
touch /root/fastchat-process/controller.log
touch /root/fastchat-process/gradio_web_server.log
touch /root/fastchat-process/model_worker.log
touch /root/fastchat-process/openai_api_server.log
  • 创建fastchat-process/main.sh
#!/bin/bash

source ~/anaconda3/etc/profile.d/conda.sh
conda activate fastchat

wait_for_startup() {
    while ! grep -q "Application startup complete" <(tail -n 10 -f "$1"); do
        sleep 1
    done
}

python3 -m fastchat.serve.controller &> "/root/fastchat-process/controller.log" &
echo "Controller is starting..."
wait_for_startup /root/fastchat-process/controller.log

python3 -m fastchat.serve.model_worker --model-path "$1" &> "/root/fastchat-process/model_worker.log" &
echo "Model worker is starting with model path $1..."
wait_for_startup /root/fastchat-process/model_worker.log

python3 -m fastchat.serve.openai_api_server --host localhost --port "$2" &> "/root/fastchat-process/openai_api_server.log" &
echo "OpenAI API server is starting on localhost:$2..."
wait_for_startup /root/fastchat-process/openai_api_server.log

python3 -m fastchat.serve.gradio_web_server &> "/root/fastchat-process/gradio_web_server.log" &
echo "Gradio web server is starting..."
wait_for_startup /root/fastchat-process/gradio_web_server.log

echo "All services have been started and are ready."

用法:./fastchat.sh /root/Yi-6B-Chat 8000

这将启动一个OPENAI_API端口为8000的服务和一个gradio web服务。具体日志可以在对应log中找到。

<think>好的,用户想在Ubuntu 22.04上对DeepSeek大模型进行微调。我需要先理解他们的需求。DeepSeek的模型可能像其他大型语言模型一样,需要特定的环境和工具来进行微调。首先,我应该考虑硬件需求,比如是否有足够的GPU资源,因为大模型训练通常需要高性能的GPU和足够的内存。 然后,用户可能已经安装了Ubuntu 22.04,但需要确认系统依赖项。常见的依赖包括Python环境、CUDA、cuDNN等。可能需要指导他们安装这些依赖,或者检查现有版本是否符合要求。 接下来,用户可能需要获取DeepSeek模型的代码和预训练权重。可能需要从GitHub克隆仓库,或者通过其他渠道下载。这里需要注意权限问题,是否有公开的代码库可用。例如,引用[3]提到使用docker-compose来启动服务,可能用户已经有部分环境配置,但微调可能需要不同的设置。 微调通常涉及准备数据集,用户需要知道数据格式的要求,比如是否使用特定格式如JSON、CSV等。数据预处理步骤可能包括清洗、分词等,可能需要使用Hugging Face的库,如datasets,或者自定义脚本。 然后,配置微调参数是关键。学习率、批次大小、训练轮数等参数需要根据具体任务调整。这里可能需要引用DeepSeek的文档,如果有的话,或者推荐通用的大模型微调实践。 训练过程中,监控资源使用和模型表现是必要的。用户可能需要使用如TensorBoard或logging工具来跟踪训练进度。此外,检查点保存和恢复功能也是重要的,以防训练中断。 验证和测试阶段,用户需要评估模型在测试集上的表现,可能涉及BLEU、ROUGE等指标,或者特定领域的评估方法。最后的应用部署可能需要将模型导出为可用格式,并集成到现有系统中。 用户可能遇到的问题包括环境配置错误、依赖冲突、显存不足等。需要提供一些常见问题的解决方法,比如调整批次大小,使用混合精度训练,或者梯度累积。 另外,引用[1]提到DeepSeek与华为昇腾芯片的优化,如果用户有相关硬件,可能需要特定的配置步骤。不过大多数情况下,可能假设用户使用NVIDIA GPU,所以需要明确说明。 最后,生成相关问题时要考虑用户可能的后续需求,比如性能优化、部署、数据处理工具的选择等。需要确保回答结构清晰,步骤详细,并且参考了提供的引用内容,比如引用[3]中的docker-compose示例,可能需要结合到环境配置部分。</think>在Ubuntu 22.04上对DeepSeek大型语言模型进行微调需要遵循以下步骤: ### 一、环境准备 1. **硬件要求** - 推荐使用NVIDIA GPU(至少24GB显存) - 系统内存建议64GB以上 - 存储空间需要500GB SSD(用于存放模型和数据集) 2. **系统依赖安装** ```bash sudo apt update && sudo apt install -y python3.10 python3-pip docker.io nvidia-container-toolkit ``` ### 二、软件环境配置 1. **Python虚拟环境** ```bash python3 -m venv deepseek-env source deepseek-env/bin/activate ``` 2. **安装PyTorch(适配CUDA版本)** ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` 3. **安装模型训练库** ```bash pip install transformers==4.35.0 datasets==2.14.5 accelerate==0.24.1 ``` ### 三、模型获取与准备 1. **获取DeepSeek模型权重** ```bash git clone https://github.com/deepseek-ai/DeepSeek-LLM.git cd DeepSeek-LLM && mkdir checkpoints ``` (需申请官方模型权重许可后获取预训练模型) 2. **Docker环境配置(参考引用[3])** ```bash echo "DEEPKEEP_MODEL=/path/to/checkpoints" >> .env docker-compose -f docker-compose.yml up -d ``` ### 四、微调流程 1. **数据准备** - 格式要求:JSONL文件格式 ```json {"prompt": "问题文本", "response": "参考答案"} ``` 2. **配置微调参数** ```python from transformers import TrainingArguments training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, gradient_accumulation_steps=2, learning_rate=2e-5, fp16=True ) ``` 3. **启动微调** ```python from transformers import Trainer trainer = Trainer( model=model, args=training_args, train_dataset=dataset, ) trainer.train() ``` ### 五、验证与部署 1. **模型验证** ```python input_text = "用户输入样例" inputs = tokenizer(input_text, return_tensors="pt") outputs = model.generate(**inputs) print(tokenizer.decode(outputs[0])) ``` 2. **性能优化(参考引用[1])** - 使用华为昇腾910B芯片加速: ```bash export HCCL_OP_BASE_FFTS_MODE=ENV ``` ### 常见问题解决 1. **显存不足**:减小`per_device_train_batch_size`值 2. **依赖冲突**:使用Docker隔离环境(参考引用[3]) 3. **训练不稳定**:尝试添加`--gradient_checkpointing`参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值