Add checkpoint skip for loaded images and --download-swe flag
This commit is contained in:
parent
8d6c5d8c1f
commit
5532c9403e
14
README.md
14
README.md
@ -78,7 +78,19 @@ python bash/run.py \
|
|||||||
|
|
||||||
## 3. Docker 镜像下载与部署
|
## 3. Docker 镜像下载与部署
|
||||||
|
|
||||||
根据是否跑 SWE-bench,选择下面两种方式之一。
|
最简方式:直接运行一键部署脚本。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 默认不下载 SWE-Bench 镜像(体积大)
|
||||||
|
bash scripts/deploy_evalscope.sh /data1/sora
|
||||||
|
|
||||||
|
# 如果需要跑 SWE-Bench,加 --download-swe
|
||||||
|
bash scripts/deploy_evalscope.sh --download-swe /data1/sora
|
||||||
|
```
|
||||||
|
|
||||||
|
脚本会自动完成:安装 modelscope、登录、下载数据集、下载/加载 Docker 镜像、配置 Docker/containerd、加载 sandbox 镜像。重复执行时会通过 checkpoint 自动跳过已加载的镜像。
|
||||||
|
|
||||||
|
如果需要手动分步操作,参考下面两种方式。
|
||||||
|
|
||||||
### 3.1 方式 A:不测 SWE-bench 的 Docker 配置
|
### 3.1 方式 A:不测 SWE-bench 的 Docker 配置
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# EvalScope 完整部署脚本
|
# EvalScope 完整部署脚本
|
||||||
# 用法: bash deploy_evalscope.sh <BASE_DIR> [TOKEN]
|
# 用法: bash deploy_evalscope.sh [OPTIONS] <BASE_DIR> [TOKEN]
|
||||||
# 示例: bash deploy_evalscope.sh /data1/sora ms-3d554a39-6e07-496d-8022-0b0ee64a6389
|
# 示例:
|
||||||
|
# bash deploy_evalscope.sh /data1/sora
|
||||||
|
# bash deploy_evalscope.sh --download-swe /data1/sora
|
||||||
|
#
|
||||||
|
# 断点续传:已加载的镜像/tar 包会记录在 <BASE_DIR>/evalscope/docker/.deploy_checkpoint
|
||||||
|
# 重复执行时会自动跳过,避免二次加载。
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
@ -10,6 +15,36 @@ set -euo pipefail
|
|||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# 1. 参数解析
|
# 1. 参数解析
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
|
DOWNLOAD_SWE=0
|
||||||
|
POSITIONAL_ARGS=()
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--download-swe)
|
||||||
|
DOWNLOAD_SWE=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--help|-h)
|
||||||
|
echo "用法: bash deploy_evalscope.sh [OPTIONS] <BASE_DIR> [TOKEN]"
|
||||||
|
echo "选项:"
|
||||||
|
echo " --download-swe 同时下载 SWE-Bench 镜像包(默认不下载,体积很大)"
|
||||||
|
echo " -h, --help 显示帮助"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo "未知选项: $1"
|
||||||
|
echo "使用 --help 查看用法"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
POSITIONAL_ARGS+=("$1")
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
set -- "${POSITIONAL_ARGS[@]}"
|
||||||
|
|
||||||
BASE_DIR="${1:-/data1/sora}" # 基础目录,默认 /data1/sora
|
BASE_DIR="${1:-/data1/sora}" # 基础目录,默认 /data1/sora
|
||||||
DEFAULT_TOKEN="ms-3d554a39-6e07-496d-8022-0b0ee64a6389"
|
DEFAULT_TOKEN="ms-3d554a39-6e07-496d-8022-0b0ee64a6389"
|
||||||
MODELSCOPE_TOKEN="${2:-$DEFAULT_TOKEN}"
|
MODELSCOPE_TOKEN="${2:-$DEFAULT_TOKEN}"
|
||||||
@ -21,6 +56,25 @@ IMAGES_DIR="$DOCKER_DIR/images"
|
|||||||
CONTAINERD_DIR="$DOCKER_DIR/containerd"
|
CONTAINERD_DIR="$DOCKER_DIR/containerd"
|
||||||
SWE_IMAGES_DIR="$DOCKER_DIR/swe_images"
|
SWE_IMAGES_DIR="$DOCKER_DIR/swe_images"
|
||||||
DATASETS_DIR="$EVALSCOPE_DIR/datasets"
|
DATASETS_DIR="$EVALSCOPE_DIR/datasets"
|
||||||
|
CHECKPOINT_FILE="$DOCKER_DIR/.deploy_checkpoint"
|
||||||
|
|
||||||
|
# 断点:记录/检查已加载的镜像或 tar 包
|
||||||
|
mark_loaded() {
|
||||||
|
local key="$1"
|
||||||
|
mkdir -p "$DOCKER_DIR"
|
||||||
|
touch "$CHECKPOINT_FILE"
|
||||||
|
if ! grep -qx "$key" "$CHECKPOINT_FILE" 2>/dev/null; then
|
||||||
|
echo "$key" >> "$CHECKPOINT_FILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
is_loaded() {
|
||||||
|
local key="$1"
|
||||||
|
if [ -f "$CHECKPOINT_FILE" ] && grep -qx "$key" "$CHECKPOINT_FILE" 2>/dev/null; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# 2. 安装依赖
|
# 2. 安装依赖
|
||||||
@ -119,7 +173,14 @@ sudo systemctl start docker
|
|||||||
# 7. 加载 evalscope 环境镜像
|
# 7. 加载 evalscope 环境镜像
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
echo "==> 加载 evalscope Docker 镜像..."
|
echo "==> 加载 evalscope Docker 镜像..."
|
||||||
docker load -i "$DOCKER_DIR/evalscope-complete-py312.tar.gz"
|
if docker images --format '{{.Repository}}:{{.Tag}}' | grep -qx "evalscope-complete-py312:latest"; then
|
||||||
|
echo "evalscope-complete-py312:latest 已存在,跳过加载"
|
||||||
|
elif is_loaded "evalscope-complete-py312.tar.gz"; then
|
||||||
|
echo "evalscope-complete-py312.tar.gz 已加载过(checkpoint),跳过加载"
|
||||||
|
else
|
||||||
|
docker load -i "$DOCKER_DIR/evalscope-complete-py312.tar.gz"
|
||||||
|
mark_loaded "evalscope-complete-py312.tar.gz"
|
||||||
|
fi
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# 8. 克隆代码仓库
|
# 8. 克隆代码仓库
|
||||||
@ -167,9 +228,14 @@ load_sandbox_image() {
|
|||||||
echo "镜像 $expected_image 已存在,跳过加载"
|
echo "镜像 $expected_image 已存在,跳过加载"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
if is_loaded "$file"; then
|
||||||
|
echo "镜像包 $file 已加载过(checkpoint),跳过加载"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
if [ -f "$SANDBOX_IMAGES_DIR/$file" ]; then
|
if [ -f "$SANDBOX_IMAGES_DIR/$file" ]; then
|
||||||
echo "==> 加载 $file ..."
|
echo "==> 加载 $file ..."
|
||||||
docker load -i "$SANDBOX_IMAGES_DIR/$file"
|
docker load -i "$SANDBOX_IMAGES_DIR/$file"
|
||||||
|
mark_loaded "$file"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
return 1
|
return 1
|
||||||
@ -196,15 +262,17 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# 10. 下载 SWE-Bench 镜像包(可选)
|
# 10. 下载 SWE-Bench 镜像包(默认不下载,需加 --download-swe)
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
if [ -n "$MODELSCOPE_TOKEN" ]; then
|
if [ "$DOWNLOAD_SWE" -eq 1 ]; then
|
||||||
echo "==> 下载 SWE-Bench 镜像包..."
|
echo "==> 下载 SWE-Bench 镜像包..."
|
||||||
mkdir -p "$SWE_IMAGES_DIR"
|
mkdir -p "$SWE_IMAGES_DIR"
|
||||||
modelscope download \
|
modelscope download \
|
||||||
--repo-type dataset \
|
--repo-type dataset \
|
||||||
--local_dir "$SWE_IMAGES_DIR" \
|
--local_dir "$SWE_IMAGES_DIR" \
|
||||||
SoraAmami/swe-bench-verified-images || echo "警告:SWE-Bench 镜像下载失败"
|
SoraAmami/swe-bench-verified-images || echo "警告:SWE-Bench 镜像下载失败"
|
||||||
|
else
|
||||||
|
echo "==> 跳过 SWE-Bench 镜像包下载(如需下载请加 --download-swe)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
@ -217,13 +285,23 @@ if [ -d "$SWE_IMAGES_DIR" ] && ls "$SWE_IMAGES_DIR"/swebench_batch_*.tar.gz 1>/d
|
|||||||
echo "共找到 $TOTAL 个镜像包"
|
echo "共找到 $TOTAL 个镜像包"
|
||||||
|
|
||||||
IDX=0
|
IDX=0
|
||||||
|
LOADED_COUNT=0
|
||||||
|
SKIPPED_COUNT=0
|
||||||
for TAR in "${TARS[@]}"; do
|
for TAR in "${TARS[@]}"; do
|
||||||
IDX=$((IDX + 1))
|
IDX=$((IDX + 1))
|
||||||
echo "[$IDX/$TOTAL] 加载 $(basename "$TAR")..."
|
BASENAME=$(basename "$TAR")
|
||||||
|
if is_loaded "$BASENAME"; then
|
||||||
|
echo "[$IDX/$TOTAL] 跳过(已加载过): $BASENAME"
|
||||||
|
SKIPPED_COUNT=$((SKIPPED_COUNT + 1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "[$IDX/$TOTAL] 加载 $BASENAME ..."
|
||||||
docker load -i "$TAR"
|
docker load -i "$TAR"
|
||||||
|
mark_loaded "$BASENAME"
|
||||||
|
LOADED_COUNT=$((LOADED_COUNT + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "SWE-Bench 镜像加载完成,已加载 $(docker images | grep '^swebench/' | wc -l) 个"
|
echo "SWE-Bench 镜像加载完成:本次加载 $LOADED_COUNT 个,跳过 $SKIPPED_COUNT 个,已加载 $(docker images | grep -c '^swebench/' || true) 个"
|
||||||
else
|
else
|
||||||
echo "跳过 SWE-Bench 镜像加载(未找到镜像包)"
|
echo "跳过 SWE-Bench 镜像加载(未找到镜像包)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user