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"