| #!/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-baseline.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" |
|
|