| """ |
| Download Qwen3-30B-A3B-Thinking-2507 to data/models/. |
| """ |
| import sys |
| from pathlib import Path |
| sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) |
|
|
| from configs.paths import ensure_dirs, LOGS_DIR |
| from configs.model import MODEL_CONFIG |
| from src.utils import setup_logger |
|
|
|
|
| def main(): |
| ensure_dirs() |
| log = setup_logger("01_download", LOGS_DIR / "01_download.log") |
|
|
| local_dir = Path(MODEL_CONFIG["local_dir"]) |
| hf_id = MODEL_CONFIG["hf_id"] |
|
|
| log.info(f"Target: {local_dir}") |
| log.info(f"Source: {hf_id}") |
|
|
| if local_dir.exists() and any(local_dir.iterdir()): |
| has_weights = any(p.suffix in [".bin", ".safetensors"] for p in local_dir.rglob("*")) |
| if has_weights: |
| log.info("Weights already present, skipping download.") |
| return |
| log.info("Directory exists but no weights found, proceeding...") |
|
|
| local_dir.mkdir(parents=True, exist_ok=True) |
|
|
| from huggingface_hub import snapshot_download |
| log.info("Starting download (Qwen3-30B ~60GB, will take time)...") |
| snapshot_download( |
| repo_id=hf_id, |
| local_dir=str(local_dir), |
| local_dir_use_symlinks=False, |
| resume_download=True, |
| ) |
| log.info(f"Download complete: {local_dir}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|