Skip to content

Commit 83d55ea

Browse files
authored
Support Text to Video implementation (#798)
1 parent 73f42bd commit 83d55ea

File tree

9 files changed

+149
-24
lines changed

9 files changed

+149
-24
lines changed

.github/workflows/build_wheel_off.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
name: Build wheel and release into PYPI (off now)
22

3-
43
on:
54
push:
65
branches:

script/app-mlperf-inference-mlcommons-python/customize.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def preprocess(i):
7373
str(env['MLC_MLPERF_LOADGEN_BATCH_SIZE'])
7474

7575
if env.get('MLC_MLPERF_LOADGEN_QUERY_COUNT', '') != '' and not env.get('MLC_TMP_IGNORE_MLPERF_QUERY_COUNT', False) and (
76-
env['MLC_MLPERF_LOADGEN_MODE'] == 'accuracy' or 'gptj' in env['MLC_MODEL'] or 'llama2' in env['MLC_MODEL'] or 'yolo' in env['MLC_MODEL'] or 'mixtral' in env['MLC_MODEL'] or 'llama3' in env['MLC_MODEL'] or 'pointpainting' in env['MLC_MODEL']) and (env.get('MLC_MLPERF_RUN_STYLE', '') != "valid" or 'pointpainting' in env['MLC_MODEL']):
76+
env['MLC_MLPERF_LOADGEN_MODE'] == 'accuracy' or 'gptj' in env['MLC_MODEL'] or 'llama2' in env['MLC_MODEL'] or 'yolo' in env['MLC_MODEL'] or 'mixtral' in env['MLC_MODEL'] or 'llama3' in env['MLC_MODEL'] or 'pointpainting' in env['MLC_MODEL'] or 'wan-2.2-t2v-a14b' in env['MLC_MODEL']) and (env.get('MLC_MLPERF_RUN_STYLE', '') != "valid" or 'pointpainting' in env['MLC_MODEL']):
7777
env['MLC_MLPERF_LOADGEN_EXTRA_OPTIONS'] += " --count " + \
7878
env['MLC_MLPERF_LOADGEN_QUERY_COUNT']
7979

@@ -638,8 +638,6 @@ def get_run_cmd_reference(
638638
"classification_and_detection",
639639
"yolo")
640640

641-
base_cmd = f"""{x}{env['MLC_PYTHON_BIN_WITH_PATH']}{x} yolo_loadgen.py"""
642-
643641
cmd = f"""{x}{env['MLC_PYTHON_BIN_WITH_PATH']}{x} yolo_loadgen.py \
644642
--model {x}{env['MLC_ML_MODEL_YOLOV11_PATH']}{x} \
645643
--dataset-path {x}{env['MLC_ML_DATASET_MLPERF_INFERENCE_YOLO_COCO2017_FILTERED_DATASET_PATH']}{x} \
@@ -654,6 +652,30 @@ def get_run_cmd_reference(
654652
else:
655653
cmd += " --PerformanceOnly "
656654

655+
elif "wan-2.2-t2v-a14b" in env['MLC_MODEL']:
656+
env['RUN_DIR'] = os.path.join(
657+
env['MLC_MLPERF_INFERENCE_SOURCE'],
658+
"text_to_video",
659+
"wan2.2-t2v-14b",)
660+
661+
video_output_directory = os.path.join(
662+
env['MLC_MLPERF_OUTPUT_DIR'], "generated_videos")
663+
os.makedirs(video_output_directory, exist_ok=True)
664+
665+
torch_distributed_cmd = ""
666+
667+
if int(env.get('MLC_MLPERF_INFERENCE_NUM_PROCESSES_PER_GPU_NODE', 1)) > 1:
668+
torch_distributed_cmd = f"torch.distributed.run --nproc_per_node={env.get('MLC_MLPERF_INFERENCE_NUM_PROCESSES_PER_GPU_NODE')}"
669+
670+
cmd = f"""{x}{env['MLC_PYTHON_BIN_WITH_PATH']}{x} {torch_distributed_cmd} run_mlperf.py \
671+
--model-path {x}{env['MLC_ML_MODEL_WAN2_PATH']}{x} \
672+
--dataset {x}{env['MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH']}{x} \
673+
--scenario {env['MLC_MLPERF_LOADGEN_SCENARIO']} \
674+
--output-dir {x}{env['MLC_MLPERF_OUTPUT_DIR']}{x} \
675+
--video_output_path {x}{video_output_directory}{x} \
676+
{env['MLC_MLPERF_LOADGEN_EXTRA_OPTIONS']} \
677+
{scenario_extra_options} {mode_extra_options}"""
678+
657679
if env.get('MLC_NETWORK_LOADGEN', '') in ["lon", "sut"]:
658680
cmd = cmd + " " + "--network " + env['MLC_NETWORK_LOADGEN']
659681
if env.get('MLC_NETWORK_LOADGEN_SUT_SERVERS', []):

script/app-mlperf-inference-mlcommons-python/meta.yaml

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ deps:
311311
- bert-99.9
312312
- gptj-99
313313
- gptj-99.9
314+
- wan-2.2-t2v-a14b
314315

315316
## Tensorflow
316317
- tags: get,generic-python-lib,_tensorflow
@@ -1569,15 +1570,13 @@ variations:
15691570
names:
15701571
- yolo-v11-model-download
15711572
skip_if_env:
1572-
MLC_USE_ML_MODEL_FROM_HOST:
1573-
- true
1573+
MLC_RUN_STATE_DOCKER:
15741574
- "yes"
15751575
- tags: get,dataset,mlperf-inference,yolo-coco2017-filtered,_mlc,_r2-downloader
15761576
names:
15771577
- yolo-v11-dataset-download
15781578
skip_if_env:
1579-
MLC_USE_DATASET_FROM_HOST:
1580-
- true
1579+
MLC_RUN_STATE_DOCKER:
15811580
- "yes"
15821581
- tags: get,generic-python-lib,_package.ultralytics
15831582
- tags: get,generic-python-lib,_package.tqdm
@@ -1598,6 +1597,52 @@ variations:
15981597
- yolo_
15991598
env:
16001599
MLC_MODEL: yolo-99
1600+
1601+
wan-2.2-t2v-a14b:
1602+
group: models
1603+
add_deps_recursive:
1604+
pytorch:
1605+
version_min: "2.5.1"
1606+
version_max: "2.5.1"
1607+
version_max_usable: "2.5.1"
1608+
ml-engine-transformers:
1609+
version_max: "4.51.3"
1610+
version_max_usable: "4.51.3"
1611+
torchvision:
1612+
version_min: "0.20.1"
1613+
version_max: "0.20.1"
1614+
version_max_usable: "0.20.1"
1615+
env:
1616+
MLC_MODEL: wan-2.2-t2v-a14b
1617+
deps:
1618+
- tags: get-ml-model-wan2,_mlc,_r2-downloader,_wan2_2_t2v_a14b
1619+
names:
1620+
- wan2-model-download
1621+
skip_if_env:
1622+
MLC_RUN_STATE_DOCKER:
1623+
- "yes"
1624+
- tags: get-dataset-mlperf-inference-text-to-video,_mlc,_r2-downloader
1625+
names:
1626+
- wan2-dataset-download
1627+
skip_if_env:
1628+
MLC_RUN_STATE_DOCKER:
1629+
- "yes"
1630+
- tags: get,generic-python-lib,_package.opencv-python
1631+
version_max: "4.11.0.86"
1632+
version_max_usable: "4.11.0.86"
1633+
- tags: get,generic-python-lib,_package.imageio
1634+
- tags: get,generic-python-lib,_package.imageio-ffmpeg
1635+
- tags: get,generic-python-lib,_package.diffusers
1636+
version_max: "0.35.2"
1637+
version_max_usable: "0.35.2"
1638+
- tags: get,generic-python-lib,_package.accelerate
1639+
- tags: get,generic-python-lib,_package.ftfy
1640+
- tags: get,generic-python-lib,_package.numpy
1641+
names:
1642+
- numpy
1643+
- tags: get,generic-python-lib,_package.flash-attn
1644+
version_min: "2.8.3"
1645+
version_max_usable: "2.8.3"
16011646

16021647
# Target devices
16031648
cpu:

script/app-mlperf-inference/meta.yaml

Lines changed: 63 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,10 @@ variations:
317317
reference,yolo_:
318318
default_variations:
319319
backend: pytorch
320+
321+
reference,wan-2.2-t2v-a14b:
322+
default_variations:
323+
backend: pytorch
320324

321325
all-models,nvidia-original:
322326
docker:
@@ -1698,22 +1702,22 @@ variations:
16981702
MLC_ML_MODEL_FILE_WITH_PATH: "on"
16991703

17001704
yolo_:
1701-
deps:
1702-
- tags: get-ml-model-yolov11,_mlc,_r2-downloader
1703-
names:
1704-
- yolo-v11-model-download
1705-
skip_if_env:
1706-
MLC_USE_ML_MODEL_FROM_HOST:
1707-
- true
1708-
- "yes"
1709-
- tags: get,dataset,mlperf-inference,yolo-coco2017-filtered,_mlc,_r2-downloader
1710-
names:
1711-
- yolo-v11-dataset-download
1712-
skip_if_env:
1713-
MLC_USE_DATASET_FROM_HOST:
1714-
- true
1715-
- "yes"
17161705
docker:
1706+
deps:
1707+
- tags: get-ml-model-yolov11,_mlc,_r2-downloader
1708+
names:
1709+
- yolo-v11-model-download
1710+
enable_if_env:
1711+
MLC_USE_ML_MODEL_FROM_HOST:
1712+
- true
1713+
- "yes"
1714+
- tags: get,dataset,mlperf-inference,yolo-coco2017-filtered,_mlc,_r2-downloader
1715+
names:
1716+
- yolo-v11-dataset-download
1717+
enable_if_env:
1718+
MLC_USE_DATASET_FROM_HOST:
1719+
- true
1720+
- "yes"
17171721
mounts:
17181722
- "${{ MLC_ML_MODEL_YOLOV11_PATH }}:${{ MLC_ML_MODEL_YOLOV11_PATH }}"
17191723
- "${{ MLC_DATASET_YOLO_COCO2017_FILTERED_PATH }}:${{ MLC_DATASET_YOLO_COCO2017_FILTERED_PATH }}"
@@ -1752,6 +1756,46 @@ variations:
17521756
add_deps_recursive:
17531757
mlperf-inference-implementation:
17541758
tags: _yolo-99
1759+
1760+
wan-2.2-t2v-a14b:
1761+
group:
1762+
model
1763+
env:
1764+
MLC_MODEL:
1765+
wan-2.2-t2v-a14b
1766+
add_deps_recursive:
1767+
mlperf-inference-implementation:
1768+
tags: _wan-2.2-t2v-a14b
1769+
docker:
1770+
deps:
1771+
- tags: get-ml-model-wan2,_mlc,_r2-downloader,_wan2_2_t2v_a14b
1772+
names:
1773+
- wan2-model-download
1774+
enable_if_env:
1775+
MLC_USE_ML_MODEL_FROM_HOST:
1776+
- true
1777+
- "yes"
1778+
- tags: get-dataset-mlperf-inference-text-to-video,_mlc,_r2-downloader
1779+
names:
1780+
- wan2-dataset-download
1781+
enable_if_env:
1782+
MLC_USE_DATASET_FROM_HOST:
1783+
- true
1784+
- "yes"
1785+
mounts:
1786+
- "${{ MLC_ML_MODEL_WAN2_PATH }}:${{ MLC_ML_MODEL_WAN2_PATH }}"
1787+
- "${{ MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH }}:${{ MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH }}"
1788+
# posthook_deps:
1789+
# - enable_if_env:
1790+
# MLC_MLPERF_LOADGEN_MODE:
1791+
# - accuracy
1792+
# - all
1793+
# MLC_MLPERF_ACCURACY_RESULTS_DIR:
1794+
# - 'on'
1795+
# names:
1796+
# - mlperf-accuracy-script
1797+
# - wan-accuracy-script
1798+
# tags: run,accuracy,mlperf,_wan
17551799

17561800
mobilenet:
17571801
group:
@@ -1952,6 +1996,10 @@ variations:
19521996
mlperf-inference-implementation:
19531997
tags: _cpu
19541998

1999+
# cuda,reference,wan-2.2-t2v-a14b:
2000+
# docker:
2001+
# base_image: pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel
2002+
19552003
cuda,reference:
19562004
docker:
19572005
base_image: nvcr.io/nvidia/pytorch:24.08-py3

script/get-dataset-mlperf-inference-text-to-video/customize.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ def postprocess(i):
2424
env = i['env']
2525

2626
if env.get('MLC_DOWNLOAD_MODE', '') != 'dry':
27+
env['MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH'] = os.path.join(
28+
env['MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH'], 'vbench_prompts.txt')
2729
env['MLC_ML_DATASET_FILE_WITH_PATH'] = env['MLC_ML_DATASET_MLPERF_INFERENCE_TEXT_TO_VIDEO_DATASET_PATH']
2830

2931
return {'return': 0}

script/get-ml-model-wan2/customize.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ def postprocess(i):
2323
env = i['env']
2424

2525
if env.get('MLC_DOWNLOAD_MODE', '') != 'dry':
26+
env['MLC_ML_MODEL_WAN2_PATH'] = os.path.join(
27+
env['MLC_ML_MODEL_WAN2_PATH'], 'Wan2.2-T2V-A14B-Diffusers')
2628
env['MLC_ML_MODEL_FILE_WITH_PATH'] = env['MLC_ML_MODEL_WAN2_PATH']
2729

2830
return {'return': 0}

script/run-docker-container/customize.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,10 @@ def postprocess(i):
176176
if is_true(env.get('MLC_DOCKER_PRIVILEGED_MODE', '')):
177177
run_opts += " --privileged "
178178

179-
if env.get('MLC_DOCKER_ADD_NUM_GPUS', '') != '':
179+
if env.get("MLC_DOCKER_GPU_DEVICES"):
180+
for d in env["MLC_DOCKER_GPU_DEVICES"].split(","):
181+
run_opts += f" --gpus device={d}"
182+
elif env.get('MLC_DOCKER_ADD_NUM_GPUS', '') != '':
180183
run_opts += " --gpus={}".format(env['MLC_DOCKER_ADD_NUM_GPUS'])
181184
elif env.get('MLC_DOCKER_ADD_ALL_GPUS', '') != '':
182185
if env.get('MLC_CONTAINER_TOOL') == "podman":

script/run-docker-container/meta.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ default_env:
2121
input_mapping:
2222
all_gpus: MLC_DOCKER_ADD_ALL_GPUS
2323
num_gpus: MLC_DOCKER_ADD_NUM_GPUS
24+
gpu_devices: MLC_DOCKER_GPU_DEVICE_IDS
2425
base: MLC_DOCKER_IMAGE_BASE
2526
cache: MLC_DOCKER_CACHE
2627
mlc_repo: MLC_MLOPS_REPO

script/run-mlperf-inference-app/meta.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ input_mapping:
7676
model: MLC_MLPERF_MODEL
7777
multistream_target_latency: MLC_MLPERF_LOADGEN_MULTISTREAM_TARGET_LATENCY
7878
network: MLC_NETWORK_LOADGEN
79+
number_of_processes_per_gpu_node: MLC_MLPERF_INFERENCE_NUM_PROCESSES_PER_GPU_NODE
7980
nvidia_system_name: MLC_NVIDIA_SYSTEM_NAME
8081
offline_target_qps: MLC_MLPERF_LOADGEN_OFFLINE_TARGET_QPS
8182
output_dir: OUTPUT_BASE_DIR
@@ -110,6 +111,7 @@ input_mapping:
110111
target_latency: MLC_MLPERF_LOADGEN_TARGET_LATENCY
111112
target_qps: MLC_MLPERF_LOADGEN_TARGET_QPS
112113
test_query_count: MLC_TEST_QUERY_COUNT
114+
test_qps: MLC_MLPERF_INFERENCE_TEST_QPS
113115
threads: MLC_NUM_THREADS
114116
sut: MLC_MLPERF_INFERENCE_SUT_VARIATION
115117
nvidia_llama2_dataset_file_path: MLC_NVIDIA_LLAMA_DATASET_FILE_PATH
@@ -515,6 +517,7 @@ input_description:
515517
- pointpainting
516518
- yolo-95
517519
- yolo-99
520+
- wan-2.2-t2v-a14b
518521
desc: MLPerf model
519522
sort: 200
520523
precision:

0 commit comments

Comments
 (0)