離線環(huán)境用docker部署Chinese-LLaMA-Alpaca 33B
由于機器在客戶環(huán)境,不能聯(lián)外網(wǎng),需要自己準(zhǔn)備各種文件拷貝上傳,比開放網(wǎng)絡(luò)要更麻煩一些,記錄下過程。
機器:
8卡A100(40GB)單機
docker和nivida-docker
驅(qū)動離線安裝
模型:
LLaMA:(如過期加wx聯(lián)系)
鏈接:https://pan.baidu.com/s/1wJvMgl8Xkp-I0GfCJi_dDQ?pwd=c7qd?提取碼:c7qd 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機App,操作更方便哦
https://github.com/ymcui/Chinese-LLaMA-Alpaca
1、模型權(quán)重準(zhǔn)備
將llama和cn_alpaca和cn_llama的權(quán)重拷貝到離線A100機器上
llama權(quán)重
/data/models/llama/
tokenizer.model # tokenizer文件
/data/models/llama/33B
params.json # 權(quán)重配置文件
consolidated.00.pth # 權(quán)重文件
consolidated.01.pth # 權(quán)重文件
consolidated.02.pth # 權(quán)重文件
consolidated.03.pth # 權(quán)重文件
cn_alpaca權(quán)重
/data/models/llama/cn_alpaca/33B
adapter_config.json # LoRA權(quán)重配置文件
adapter_model.bin # LoRA權(quán)重文件
special_tokens_map.json # special_tokens_map文件
tokenizer_config.json # tokenizer配置文件
tokenizer.model # tokenizer文件
check sha256
2、環(huán)境準(zhǔn)備
制作鏡像,下載鏡像,拷貝到A100服務(wù)器,恢復(fù)鏡像
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
之后上傳tar文件,并登錄到離線服務(wù)器
docker load < cn_llama_alpaca.tar
docker images
docker tag a586dxxxxx haizhi/llama:cn_llama_alpaca docker images
3、微調(diào)訓(xùn)練
依賴安裝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
轉(zhuǎn)換模型格式(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權(quán)重合并(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
測試
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顯存