File size: 1,564 Bytes
bd710e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python3
"""
Hugging Face Spaces entry point for NanoChat.
This file is automatically detected and run by HF Spaces.
"""

import os
import sys

# Set environment variables for HF Spaces
os.environ.setdefault("NANOCHAT_BASE_DIR", "/data")

# Download model from HF if not present
def download_model():
    """Download model weights from Hugging Face."""
    checkpoint_dir = "/data/chatsft_checkpoints"

    if os.path.exists(checkpoint_dir) and os.listdir(checkpoint_dir):
        print(f"Model checkpoints found, skipping download")
        return

    print("Downloading model from BrianGuo/nanochat-d20-chat...")
    from huggingface_hub import snapshot_download

    snapshot_download(
        repo_id="BrianGuo/nanochat-d20-chat",
        local_dir="/data/chatsft_checkpoints"
    )
    print("Model downloaded successfully!")

if __name__ == "__main__":
    # Download model before starting
    download_model()

    # Override sys.argv to pass default arguments for HF Spaces
    sys.argv = [
        "app.py",
        "--port", "7860",  # HF Spaces default port
        "--host", "0.0.0.0",
        "--source", "sft",
        "--model-tag", os.environ.get("MODEL_TAG", "d20"),
        "--step", os.environ.get("MODEL_STEP", "650"),
    ]

    # Import and run the web server
    from scripts.chat_web import app
    import uvicorn

    print("Starting NanoChat on Hugging Face Spaces...")
    print(f"Model: {os.environ.get('MODEL_TAG', 'd20')} - Step: {os.environ.get('MODEL_STEP', '650')}")

    uvicorn.run(app, host="0.0.0.0", port=7860)