小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

大模型使用——超算上部署LLAMA-2-70B-Chat_Phunsukh

 百鳴村 2023-08-30 發(fā)布于湖北

前言
1、本機(jī)為Inspiron 5005,為64位,所用操作系統(tǒng)為Windos 10。超算的操作系統(tǒng)為基于Centos的linuxGPU配置為A100,所使用開發(fā)環(huán)境為Anaconda。
2、本教程主要實(shí)現(xiàn)了在超算上部署LLAMA2-70B-Chat。


實(shí)現(xiàn)步驟
1、連接上超算以后,執(zhí)行如下命令在超算上創(chuàng)建一個虛擬環(huán)境。

conda create --name alpaca python=3.9 -y

2、運(yùn)行如下命令激活虛擬環(huán)境。

conda activate alpaca

3、在到LLAMA2的Github地址下載好llama2項(xiàng)目。


4、將下載好llama2項(xiàng)目的文件通過自己windows上的cmd中輸入scp指令傳輸?shù)匠闵稀?/font>

scp -r E:\llama-main wangcheng@10.26.14.56:/public/home/wangcheng/


5、在超算上進(jìn)入llama-main文件夾,然后輸入如下命令安裝穩(wěn)定版的llama2運(yùn)行的依賴。

cd llama-main
pip install -e .

6、在Meta申請LLAMA2使用的鏈接地址上填寫資料,然后申請LLAMA2模型的下載鏈接,申請完畢可以得到一份郵件,郵件中包含了下載鏈接。


7、在超算的llama-main目錄下使用如下指令開始下載模型,在下載模型開始時(shí),會要求你輸入下載鏈接,第二步會讓你選擇要下載的模型,你選好要下載的模型以后,程序便會自己進(jìn)行下載,整個過程時(shí)間比較長,在模型下載完畢后會自己先進(jìn)行一步模型文件下載是否完整的校驗(yàn),若你要自己進(jìn)行一下文件的校驗(yàn),可以使用如下所示的第二條指令,第二條指令雙引號中的內(nèi)容在下載的模型文件夾中包含的checklist.chk文件中找到,然后進(jìn)行替換校驗(yàn)即可。

bash download.sh
echo "6efc8dab194ab59e49cd24be5574d85e  consolidated.00.pth" | md5sum --check -

8、模型下載完畢后,通過如下指令將自己創(chuàng)建的llama_test.sh文件進(jìn)行超算的使用調(diào)度。(注:llama_test.sh文件中的代碼如下:)

sbatch llama_test.sh
#!/bin/bash
#SBATCH --job-name=llama_job_test
#SBATCH --output=testLLAMAJob.%j.out
#SBATCH --error=testLLAMAJob.%j.err 
#SBATCH --partition=GPU_s 
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=8
#SBATCH --gres=gpu:8

starttime=`date +'%Y-%m-%d %H:%M:%S'` # 執(zhí)行data命令,獲取當(dāng)前的日期和時(shí)間的格式化表示,并賦值給starttime
nvidia-smi  # 查看NVIDIA GPU的狀態(tài)和性能信息,輸出當(dāng)前節(jié)點(diǎn)上GPU的狀態(tài)信息
echo "CUDA_VISIBLE_DEVICES = $CUDA_VISIBLE_DEVICES"  # 輸出當(dāng)前進(jìn)程中 CUDA_VISIBLE_DEVICES 的值,echo 命令用于輸出字符串

source ~/.bashrc  # 于重新加載用戶的 Bash 配置文件 ~/.bashrc,確保在后續(xù)的命令中可以使用最新的環(huán)境變量和別名設(shè)置
hostname >./hostfile  # 獲取當(dāng)前主機(jī)的名稱,并將其輸出到一個名為 hostfile 的文件中

echo $SLURM_NTASKS  # 輸出當(dāng)前作業(yè)中分配的任務(wù)數(shù)
echo "Date = $(date)"  # 輸出當(dāng)前的日期和時(shí)間
echo "Hostname = $(hostname -s)"  # 輸出當(dāng)前主機(jī)的名稱
echo "Working Directory = $(pwd)"  # 輸出當(dāng)前工作目錄的路徑 
echo ""  # 輸出一個空行,使易于閱讀
echo "Number of Nodes Allocated = $SLURM_JOB_NUM_NODES"  # 輸出作業(yè)節(jié)點(diǎn)
echo "Number of Tasks Allocated = $SLURM_NTASKS"  # 輸出當(dāng)前作業(yè)分配的任務(wù)數(shù)
echo "Number of Cores/Task Allocated = $SLURM_CPUS_PER_TASK"  # 輸出每個任務(wù)被分配的CPU核心數(shù)
echo $SLURM_NPROCS  # 輸出當(dāng)前作業(yè)中分配的處理器數(shù)

ulimit -s unlimited  # 設(shè)置當(dāng)前shell會話的棧大小限制為無限制
ulimit -v unlimited  # 設(shè)置當(dāng)前shell會話的虛擬內(nèi)存限制為無限制,即不限制進(jìn)程使用的虛擬內(nèi)存大小
ulimit -m unlimited  # 設(shè)置當(dāng)前shell會話的物理內(nèi)存限制為無限制

module load cuda/11.7  # 加載11.7版本的CUDA軟件模塊
module load gcc/12.1  # 加載12.1的GCC編譯器的軟件模塊
module load torch/2.0.1  # 加載2.0.1版本的torch

# module load cuda/11.6  # 加載11.6版本的CUDA軟件模塊
# module load gcc/12.1  # 加載12.1的GCC編譯器的軟件模塊
# module load torch/2.0  # 加載2.0版本的torch

source activate alpaca  # 激活名為 alpaca 的Python虛擬環(huán)境

python -V  # 顯示當(dāng)前系統(tǒng)上安裝的Python版本號
echo "CUDA_VISIBLE_DEVICES = $CUDA_VISIBLE_DEVICES"  # 輸出當(dāng)前作業(yè)可以使用的CUDA設(shè)備的ID列表
echo "CONDA_DEFAULT_ENV = $CONDA_DEFAULT_ENV"  # 輸出當(dāng)前工作的conda虛擬環(huán)境
# conda list  # 列出當(dāng)前conda環(huán)境下安裝的python包

# export MASTER_ADDR=localhost
# export MASTER_PORT=8888
# export WORLD_SIZE=8
# export NODE_RANK=0
# export OMP_NUM_THREADS=9

# 使用torchrun進(jìn)行分布式部署
# torchrun --nproc_per_node 8 example_chat_completion.py --ckpt_dir llama-2-70b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
torchrun --nproc_per_node 8 chat.py --ckpt_dir llama-2-70b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
# torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
# python chat.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
# python -m torch.distributed.launch --nproc_per_node=8 chat.py --ckpt_dir llama-2-70b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
nvidia-smi 

echo Job ends at `date`  # 輸出當(dāng)前的日期
endtime=`date +'%Y-%m-%d %H:%M:%S'`  # 執(zhí)行data命令,獲取當(dāng)前的日期和時(shí)間的格式化表示,并賦值給endtime
start_seconds=$(date --date="$starttime" +%s);  # 將開始時(shí)間轉(zhuǎn)換為秒數(shù)
end_seconds=$(date --date="$endtime" +%s);  # 將結(jié)束時(shí)間轉(zhuǎn)換為秒數(shù)
echo "本次運(yùn)行時(shí)間: "$((end_seconds-start_seconds))"s"  # 輸出字符串,得到當(dāng)前任務(wù)

10、在得到的輸出文件testLLAMAJob.389396.out中可以看到llama2成功部署到超算上了。


Remark:實(shí)行部署筆記紙質(zhì)檔

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多