Demo Pack Pipeline
Less than 1 minute
π¦ Demo pack pipeline
Goal: explain how pack_demo produces a runnable demo/ directory, including where app.py comes from and what files are written/copied/symlinked.
π Entry points
- Stage:
pack_demoβespnet3/systems/base/system.py:System.pack_demo - Implementation:
espnet3/demo/pack.py:pack_demo
π Output layout
pack_demo produces a runnable directory. Typical output:
demo
βββ app.py
βββ demo.yaml
βββ requirements.txt
βββ README.md
βββ config
βΒ Β βββ infer.yaml
βββ data -> ../data/
βββ exp -> ../exp/
βββ (optional files from pack.files ...)Notes:
demo.yamlis rewritten soinfer_configpoints toconfig/infer.yamlanddemo_diris set.README.mdmay be generated if missing.- Entries under
pack.filesindemo.yamlare typically added as symlinks into the demo directory (implementation detail inespnet3/demo/pack.py).
π How each file is generated
app.py- Written by
espnet3/demo/setup.py:_write_app_py()viaespnet3/demo/setup.py:setup_demo_assets() - Contents come from
espnet3/demo/setup.py:_APP_TEMPLATEand callespnet3/demo/app_builder.py:build_demo_app(demo_dir)
- Written by
requirements.txt- Written by
espnet3/demo/setup.py:_write_requirements()viaespnet3/demo/setup.py:setup_demo_assets() - Uses
requirements:indemo.yamlif present, otherwise writes a small default - To add system/recipe-specific dependencies (e.g., extra tokenizers, GPU libs), set
requirements:indemo.yamlto the full list you want shipped with the demo package.pack_demowill write it into the packed directory.
- Written by
demo.yaml- Prepared by
espnet3/demo/pack.py:_prepare_demo_config():- sets
demo_dir - rewrites
infer_configtoconfig/infer.yamlfor the packed demo - sets
ui.article_pathtoREADME.mdwhen missing
- sets
- Written by
espnet3/demo/pack.py:_write_demo_config()
- Prepared by
config/infer.yaml- Loaded/resolved from the source
infer_configby:espnet3/demo/resolve.py:resolve_infer_path()espnet3/demo/resolve.py:load_infer_config()
- Written to the demo directory by
espnet3/demo/pack.py:_write_infer_config()
- Loaded/resolved from the source
README.md- Created only if missing by
espnet3/demo/pack.py:_write_readme_if_missing() - Template resolution happens in
espnet3/demo/pack.py:_load_demo_readme_template()
- Created only if missing by
data,exp, and any other entries underpack.filesindemo.yaml- Added by
espnet3/demo/pack.py:_copy_pack_files()(typically as symlinks viaespnet3/demo/pack.py:_copy_path(..., symlink=True))
- Added by
