[自动] 云端一键部署脚本
This commit is contained in:
1 parent
c369804d3c
commit
463cf697fd
1 file changed
+90
@@ -0,0 +1,90 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
XiaLi 云 GPU 一键搭建脚本
|
||||||
|
=========================
|
||||||
|
适用于 AutoDL / 矩池云 / 恒源云 等国内云GPU平台
|
||||||
|
|
||||||
|
用法:
|
||||||
|
bash setup_cloud.sh # 完整搭建
|
||||||
|
bash setup_cloud.sh --train-only # 只拉代码,不下载数据
|
||||||
|
"""
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "========================================"
|
||||||
|
echo " XiaLi 云 GPU 训练环境搭建"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
REPO_URL="https://gitee.com/shuiyu1123/xiaoli-llm-chat.git"
|
||||||
|
WORK_DIR="/root/xiaoli-llm-chat"
|
||||||
|
|
||||||
|
# 1. 克隆代码
|
||||||
|
echo ""
|
||||||
|
echo "[1/4] 克隆代码..."
|
||||||
|
if [ -d "$WORK_DIR" ]; then
|
||||||
|
echo " 目录已存在,拉取更新..."
|
||||||
|
cd "$WORK_DIR" && git pull
|
||||||
|
else
|
||||||
|
git clone "$REPO_URL" "$WORK_DIR"
|
||||||
|
cd "$WORK_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 安装依赖
|
||||||
|
echo ""
|
||||||
|
echo "[2/4] 安装依赖..."
|
||||||
|
pip install torch numpy -q
|
||||||
|
# 检查 torch 是否有 CUDA
|
||||||
|
python3 -c "import torch; print(f'CUDA可用: {torch.cuda.is_available()}, GPU数: {torch.cuda.device_count()}')" 2>/dev/null || {
|
||||||
|
echo " ⚠️ 检测到无 CUDA,尝试安装 GPU 版 PyTorch..."
|
||||||
|
pip install torch --index-url https://download.pytorch.org/whl/cu118 -q
|
||||||
|
}
|
||||||
|
pip install modelscope -q
|
||||||
|
|
||||||
|
# 确认词表存在
|
||||||
|
echo ""
|
||||||
|
echo "[3/4] 检查词表..."
|
||||||
|
ls -la vocab.json 2>/dev/null || {
|
||||||
|
echo " ⚠️ vocab.json 不存在!请确认仓库完整"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
python3 -c "
|
||||||
|
import json
|
||||||
|
with open('vocab.json') as f:
|
||||||
|
v = json.load(f)
|
||||||
|
print(f' 词表: {len(v)} tokens, vocab_size={max(v.values())+1}')
|
||||||
|
"
|
||||||
|
|
||||||
|
# 4. 确认训练脚本
|
||||||
|
echo ""
|
||||||
|
echo "[4/4] 确认训练脚本..."
|
||||||
|
ls -la train_cloud.py && echo " ✅ train_cloud.py 就绪"
|
||||||
|
|
||||||
|
# 显存信息
|
||||||
|
echo ""
|
||||||
|
echo "========================================"
|
||||||
|
echo " 环境就绪!"
|
||||||
|
echo "========================================"
|
||||||
|
python3 -c "
|
||||||
|
import torch
|
||||||
|
if torch.cuda.is_available():
|
||||||
|
total = torch.cuda.get_device_properties(0).total_mem / 1024**3
|
||||||
|
name = torch.cuda.get_device_name(0)
|
||||||
|
print(f' GPU: {name} ({total:.1f} GiB)')
|
||||||
|
else:
|
||||||
|
print(' ⚠️ 未检测到 GPU!')
|
||||||
|
"
|
||||||
|
echo ""
|
||||||
|
echo "启动训练命令:"
|
||||||
|
echo " cd $WORK_DIR"
|
||||||
|
echo ""
|
||||||
|
echo " # 单卡训练(完整流程)"
|
||||||
|
echo " python3 train_cloud.py --epochs 5 --align-epochs 20"
|
||||||
|
echo ""
|
||||||
|
echo " # 从检查点续训"
|
||||||
|
echo " python3 train_cloud.py --resume --epochs 10"
|
||||||
|
echo ""
|
||||||
|
echo " # 24G显存用更小batch"
|
||||||
|
echo " python3 train_cloud.py --batch-size 32"
|
||||||
|
echo ""
|
||||||
|
echo "========================================"
|
||||||
Reference in new issue
Block a user