File size: 6,732 Bytes
4357d9b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | # #!/usr/bin/env bash
# set -euo pipefail
# SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# source "$SCRIPT_DIR/deploy/env.sh"
# mkdir -p "$LOG_DIR" "$RUNTIME_DIR"
# RUN_NAME="${RUN_NAME:-poetry_bindweave_10s_$(date +%Y%m%d_%H%M%S)}"
# LOG_FILE="$LOG_DIR/${RUN_NAME}.log"
# POEM="${POEM:-夜雨寄北
# 李商隐
# 君问归期未有期,巴山夜雨涨秋池。
# 何当共剪西窗烛,却话巴山夜雨时。}"
# require_path() {
# local path="$1"
# local message="$2"
# if [[ ! -e "$path" ]]; then
# echo "$message: $path" >&2
# exit 1
# fi
# }
# require_path "$QWEN_IMAGE_MODEL" "Qwen-Image model is missing"
# require_path "$COSYVOICE_MODEL" "CosyVoice model is missing"
# require_path "$BINDWEAVE_ROOT" "BindWeave code directory is missing"
# require_path "$BINDWEAVE_ROOT/MindSpeed-MM/checkpoint" "BindWeave MindSpeed-MM submodule is incomplete"
# require_path "$BINDWEAVE_ROOT/MindSpeed/mindspeed" "BindWeave MindSpeed submodule is incomplete"
# require_path "$BINDWEAVE_ROOT/Megatron-LM/megatron" "BindWeave Megatron-LM submodule is incomplete"
# require_path "$BINDWEAVE_SOURCE_MODEL" "BindWeave HF checkpoint directory is missing"
# require_path "$BINDWEAVE_WAN21_MODEL/vae" "Wan2.1 VAE directory is missing"
# require_path "$BINDWEAVE_WAN21_MODEL/tokenizer" "Wan2.1 tokenizer directory is missing"
# require_path "$BINDWEAVE_WAN21_MODEL/text_encoder" "Wan2.1 text_encoder directory is missing"
# require_path "$BINDWEAVE_WAN21_MODEL/image_encoder" "Wan2.1 image_encoder directory is missing"
# require_path "$BINDWEAVE_QWEN_MODEL" "Qwen2.5-VL model is missing"
# if ! curl -fsS \
# -H "Authorization: Bearer ${QWEN35_API_KEY:-qwen3.5-27b-local}" \
# "${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}/models" \
# >/dev/null; then
# echo "Qwen3.5 service is not ready: ${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}" >&2
# echo "Please start it first: bash $VGEN_ROOT/scripts/deploy/start_qwen35_27b.sh" >&2
# exit 1
# fi
# if [[ -f /usr/local/Ascend/ascend-toolkit/set_env.sh ]]; then
# source /usr/local/Ascend/ascend-toolkit/set_env.sh
# fi
# source "$CONDA_SH"
# conda activate "$DIFF_ENV"
# PYTHON_BIN="${PYTHON_BIN:-$CONDA_ROOT/envs/$DIFF_ENV/bin/python}"
# BINDWEAVE_PYTHON="${BINDWEAVE_PYTHON:-$PYTHON_BIN}"
# BINDWEAVE_PYTHONPATH="$BINDWEAVE_ROOT:$BINDWEAVE_ROOT/MindSpeed-MM:$BINDWEAVE_ROOT/MindSpeed:$BINDWEAVE_ROOT/Megatron-LM${PYTHONPATH:+:$PYTHONPATH}"
# export PYTHONPATH="$BINDWEAVE_PYTHONPATH"
# if [[ ! -f "$BINDWEAVE_CHECKPOINT/latest_checkpointed_iteration.txt" ]]; then
# echo "Converting BindWeave checkpoint to MindSpeed/MM format..."
# rm -rf "$BINDWEAVE_CHECKPOINT"
# (
# cd "$BINDWEAVE_ROOT"
# PYTHONPATH="$BINDWEAVE_PYTHONPATH" "$BINDWEAVE_PYTHON" convert_ckpt.py \
# --source_path "$BINDWEAVE_SOURCE_MODEL" \
# --target_path "$BINDWEAVE_CHECKPOINT" \
# --mode convert_to_mm
# )
# fi
# require_path "$BINDWEAVE_CHECKPOINT/latest_checkpointed_iteration.txt" "Converted BindWeave checkpoint is missing"
# export BINDWEAVE_PYTHON
# export VIDEO_BACKEND=bindweave
# OUTPUT_DIR="$VGEN_ROOT/outputs/poetry_teaching/$RUN_NAME"
# echo "Run name: $RUN_NAME"
# echo "Log file: $LOG_FILE"
# echo "Output dir: $OUTPUT_DIR"
# echo "Video backend: BindWeave"
# echo "BindWeave checkpoint: $BINDWEAVE_CHECKPOINT"
# echo "Wan2.1 base: $BINDWEAVE_WAN21_MODEL"
# echo "Qwen2.5-VL: $BINDWEAVE_QWEN_MODEL"
# nohup bash "$SCRIPT_DIR/run_poetry_teaching_pipeline.sh" \
# --poem "$POEM" \
# --run-name "$RUN_NAME" \
# --segments "${SEGMENTS:-6}" \
# --clip-seconds "${CLIP_SECONDS:-10}" \
# --fps "${FPS:-15}" \
# --height "${HEIGHT:-480}" \
# --width "${WIDTH:-832}" \
# --image-height "${IMAGE_HEIGHT:-720}" \
# --image-width "${IMAGE_WIDTH:-1280}" \
# --image-device "${IMAGE_DEVICE:-cuda:0}" \
# --image-workers "${IMAGE_WORKERS:-1}" \
# --video-workers "${VIDEO_WORKERS:-1}" \
# --audio-workers "${AUDIO_WORKERS:-1}" \
# --video-backend bindweave \
# --bindweave-root "$BINDWEAVE_ROOT" \
# --bindweave-checkpoint "$BINDWEAVE_CHECKPOINT" \
# --bindweave-wan21-model "$BINDWEAVE_WAN21_MODEL" \
# --bindweave-qwen-model "$BINDWEAVE_QWEN_MODEL" \
# --bindweave-python "$BINDWEAVE_PYTHON" \
# --bindweave-device "$BINDWEAVE_DEVICE" \
# --bindweave-nproc-per-node "$BINDWEAVE_NPROC_PER_NODE" \
# --bindweave-context-parallel-size "$BINDWEAVE_CONTEXT_PARALLEL_SIZE" \
# --bindweave-master-port "$BINDWEAVE_MASTER_PORT" \
# --video-steps "${VIDEO_STEPS:-50}" \
# --qwen35-api-base "${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}" \
# --qwen35-model "${QWEN35_MODEL:-qwen3.5-27b-local}" \
# --qwen35-api-key "${QWEN35_API_KEY:-qwen3.5-27b-local}" \
# --overwrite \
# "$@" \
# >"$LOG_FILE" 2>&1 &
# echo $! > "$RUNTIME_DIR/${RUN_NAME}.pid"
# echo "Started PID: $(cat "$RUNTIME_DIR/${RUN_NAME}.pid")"
# echo "Follow log: tail -f $LOG_FILE"
# echo "Final video: $OUTPUT_DIR/final_poetry_teaching.mp4"
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/deploy/env.sh"
mkdir -p "$LOG_DIR" "$RUNTIME_DIR"
RUN_NAME="${RUN_NAME:-poetry_full_10s_$(date +%Y%m%d_%H%M%S)}"
LOG_FILE="$LOG_DIR/${RUN_NAME}.log"
POEM="${POEM:-枫桥夜泊
张继
月落乌啼霜满天,江枫渔火对愁眠。
姑苏城外寒山寺,夜半钟声到客船。}"
if ! curl -fsS \
-H "Authorization: Bearer ${QWEN35_API_KEY:-qwen3.5-27b-local}" \
"${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}/models" \
>/dev/null; then
echo "Qwen3.5 service is not ready: ${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}" >&2
echo "Please start it first: bash $VGEN_ROOT/scripts/deploy/start_qwen35_27b.sh" >&2
exit 1
fi
echo "Run name: $RUN_NAME"
echo "Log file: $LOG_FILE"
echo "Output dir: $VGEN_ROOT/outputs/poetry_teaching/$RUN_NAME"
nohup bash "$SCRIPT_DIR/run_poetry_teaching_pipeline-agentloop.sh" \
--poem "$POEM" \
--run-name "$RUN_NAME" \
--segments "${SEGMENTS:-6}" \
--clip-seconds "${CLIP_SECONDS:-10}" \
--fps "${FPS:-15}" \
--image-device "${IMAGE_DEVICE:-cuda:0}" \
--video-usp-devices "${VIDEO_USP_DEVICES:-1,2,3,4,5}" \
--image-workers "${IMAGE_WORKERS:-1}" \
--video-workers "${VIDEO_WORKERS:-1}" \
--audio-workers "${AUDIO_WORKERS:-1}" \
--qwen35-api-base "${QWEN35_API_BASE:-http://127.0.0.1:8002/v1}" \
--qwen35-model "${QWEN35_MODEL:-qwen3.5-27b-local}" \
--qwen35-api-key "${QWEN35_API_KEY:-qwen3.5-27b-local}" \
--overwrite \
"$@" \
>"$LOG_FILE" 2>&1 &
echo $! > "$RUNTIME_DIR/${RUN_NAME}.pid"
echo "Started PID: $(cat "$RUNTIME_DIR/${RUN_NAME}.pid")"
echo "Follow log: tail -f $LOG_FILE"
echo "Final video: $VGEN_ROOT/outputs/poetry_teaching/$RUN_NAME/final_poetry_teaching.mp4"
|