美文网首页
离线环境用docker部署Chinese-LLaMA-Alpac

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

作者: 水他 | 来源:发表于2023-06-15 18:59 被阅读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/

    • tokenizer.model # tokenizer文件

    cn_alpaca权重

    /data/models/llama/cn_alpaca/33B

    • adapter_config.json # LoRA权重配置文件
    • adapter_model.bin # LoRA权重文件
    • special_tokens_map.json # special_tokens_map文件
    • tokenizer_config.json # tokenizer配置文件
    • tokenizer.model # tokenizer文件

    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卡。

    相关文章

      网友评论

          本文标题:离线环境用docker部署Chinese-LLaMA-Alpac

          本文链接:https://www.haomeiwen.com/subject/cpplydtx.html