离线环境用docker部署Chinese-LLaMA-Alpac

2023-06-15  本文已影响0人  水他

由于机器在客户环境,不能联外网,需要自己准备各种文件拷贝上传,比开放网络要更麻烦一些,记录下过程。

机器:

8卡A100(40GB)单机

docker和nivida-docker

驱动离线安装

模型:

LLaMA:(如过期加wx联系)

链接:https://pan.baidu.com/s/1wJvMgl8Xkp-I0GfCJi_dDQ?pwd=c7qd 提取码:c7qd 复制这段内容后打开百度网盘手机App,操作更方便哦

1. 模型权重准备

将llama和cn_alpaca和cn_llama的权重拷贝到离线A100机器上

llama权重

/data/models/llama/

cn_alpaca权重

/data/models/llama/cn_alpaca/33B

check sha256

2. 环境准备

制作镜像,下载镜像,拷贝到A100服务器,恢复镜像

git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca
vi requirements.txt

    torch==1.13.1
    peft==0.3.0
    transformers==4.28.1
    sentencepiece==0.1.97
    protobuf==3.19.0
    cpm_kernels
    gradio
    mdtex2html
    accelerate
    sentencepiece==0.1.97
    numpy==1.24.3
    pyzmq==18.1.1

vi Dockerfile

    FROM cuda_python:3.9.13-gpu
    LABEL org.opencontainers.image.authors="lisiyu@haizhi.com"
    
    WORKDIR /app
    
    COPY requirements.txt .
    
    RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
        pip install --no-cache-dir -r requirements.txt
    
    COPY . .

docker build -t haizhi/llama:cn_llama_alpaca .
docker images
docker save e78657ebfd4f > /data/lsy/cn_llama_alpaca.tar

docker load < cn_llama_alpaca.tar
docker images
docker tag a586dxxxxx haizhi/llama:cn_llama_alpaca
docker images

3. 微调训练

依赖安装docker和nivida-docker

nvidia-docker run --name llama33b --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
    --rm -it \
    -v /data/models/llama:/app/original-weights \
    --security-opt seccomp=unconfined \
    haizhi/llama:cn_llama_alpaca bash

测试

echo "import torch" > test.py
echo "print(torch.cuda.is_available())" >> test.py
python3 test.py
    True

转换模型格式(7分钟)

python3 transformers/src/tranformers/models/llama/convert_llama_weights_to_hf.py --input_dir /app/original-weights --model_size 30B --output_dir /app/original-weights/30B_hf

LoRA权重合并(15分钟)

python3 scripts/merge_llama_with_chinese_lora.py --base_model original-weights/30B_hf --lora_model original-weights/cn_alpaca/33B --output_type huggingface --output_dir original/cn_llama_alpaca/33B

大概33B的模型合并共占用11GB gpu,下图中另外的计算任务是65B的训练

测试

python3 scripts/inference/inference_hf.py --base_model original-weights/cn_llama_alpaca/7B --with_prompt --interactive --gpus 4,5,6,7

推理:A100 x 8卡的机器,启动推理+gradio,33B的llama fp16精度占用了77GB显存

量化推理:33B的int8占用了37GB显存

问题

torch.cuda.OutOfMemoryError: CUDA out of memory.

因为0卡gpu内存不够了,改为7卡。

上一篇下一篇

猜你喜欢

热点阅读