ceperaltab's picture
Upload train_uv.py with huggingface_hub
8377188 verified
#!/usr/bin/env python3
"""
Elasticsearch Expert Model Training Script (UV Wrapper)
This script uses `uv` to manage dependencies on Hugging Face Jobs,
providing much faster and more reliable environment setup.
"""
import subprocess
import sys
import os
def run_command(cmd):
print(f"Executing: {cmd}")
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
for line in process.stdout:
print(line, end="")
process.wait()
return process.returncode
def main():
print("=" * 50)
print("Elasticsearch Training Job - Environment Setup (UV)")
print("=" * 50)
# 1. Install uv
print("\nInstalling uv...")
if run_command("curl -LsSf https://astral.sh/uv/install.sh | sh") != 0:
print("Failed to install uv")
sys.exit(1)
# Add uv to path
os.environ["PATH"] = f"{os.path.expanduser('~/.local/bin')}:{os.environ['PATH']}"
# 2. Run training using uv
print("\nLaunching training script with uv...")
# We use 'uv run' which handles the virtualenv and dependencies automatically
# based on the requirements_train.txt or inline metadata.
# Here we'll pass the requirements file.
cmd = "uv run --with-requirements requirements_train.txt python train.py"
exit_code = run_command(cmd)
if exit_code == 0:
print("\nTraining completed successfully!")
else:
print(f"\nTraining failed with exit code {exit_code}")
sys.exit(exit_code)
if __name__ == "__main__":
main()