Spaces:
Sleeping
Sleeping
| """Download the NLLB-200 model from HuggingFace and convert it to CTranslate2 | |
| int8 format for fast, low-memory CPU inference. | |
| Run once before starting the server: | |
| python convert_model.py | |
| This produces ~600 MB in ``models/nllb-200-distilled-600M-int8`` (vs ~2.4 GB | |
| for the fp32 HuggingFace checkpoint). | |
| """ | |
| from __future__ import annotations | |
| import os | |
| import subprocess | |
| import sys | |
| HF_MODEL = os.environ.get("HF_MODEL", "facebook/nllb-200-distilled-600M") | |
| OUT_DIR = os.environ.get("CT2_MODEL_DIR", "models/nllb-200-distilled-600M-int8") | |
| QUANTIZATION = os.environ.get("CT2_COMPUTE_TYPE", "int8") | |
| def main() -> int: | |
| if os.path.isdir(OUT_DIR): | |
| print(f"Model already converted at '{OUT_DIR}'. Nothing to do.") | |
| return 0 | |
| os.makedirs(os.path.dirname(OUT_DIR) or ".", exist_ok=True) | |
| # Invoke via `-m` so it works without the Scripts dir on PATH (Windows venvs). | |
| cmd = [ | |
| sys.executable, "-m", "ctranslate2.converters.transformers", | |
| "--model", HF_MODEL, | |
| "--output_dir", OUT_DIR, | |
| "--quantization", QUANTIZATION, | |
| ] | |
| print("Running:", " ".join(cmd)) | |
| result = subprocess.run(cmd) | |
| if result.returncode == 0: | |
| print(f"\nDone. CTranslate2 model written to '{OUT_DIR}'.") | |
| else: | |
| print("\nConversion failed.", file=sys.stderr) | |
| return result.returncode | |
| if __name__ == "__main__": | |
| raise SystemExit(main()) | |