Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| from pathlib import Path | |
| from huggingface_hub import HfApi, login | |
| HF_TOKEN = os.environ.get("HF_TOKEN", "YOUR_HF_TOKEN") | |
| MODEL_REPO = "Chirag0123/shiftlog-gym-qwen-memory-policy" | |
| ADAPTER_DIR = Path("outputs/grpo-stagec") | |
| MODEL_CARD_PATH = Path("model_card.md") | |
| if HF_TOKEN == "YOUR_HF_TOKEN": | |
| print("⚠️ Please set your HF_TOKEN in the script or environment.") | |
| exit(1) | |
| login(token=HF_TOKEN) | |
| api = HfApi(token=HF_TOKEN) | |
| print(f"Checking repo {MODEL_REPO}...") | |
| api.create_repo(repo_id=MODEL_REPO, repo_type="model", exist_ok=True) | |
| def upload_model_card(): | |
| if not MODEL_CARD_PATH.exists(): | |
| print(f"ERROR: {MODEL_CARD_PATH} does not exist.") | |
| sys.exit(1) | |
| print(f"Uploading model card from {MODEL_CARD_PATH}...") | |
| api.upload_file( | |
| path_or_fileobj=str(MODEL_CARD_PATH), | |
| path_in_repo="README.md", | |
| repo_id=MODEL_REPO, | |
| repo_type="model", | |
| ) | |
| print("✅ README.md uploaded") | |
| def upload_adapter_files(): | |
| global ADAPTER_DIR | |
| if not ADAPTER_DIR.exists(): | |
| print(f"ERROR: {ADAPTER_DIR} does not exist.") | |
| print("Adapter was not saved. Check training pipeline.") | |
| for alt in ["outputs/stage-c", "outputs/lora", "checkpoints/step_300", "checkpoints/final", "shiftlog-model-merged"]: | |
| if Path(alt).exists(): | |
| print(f"Found alternate path: {alt}") | |
| ADAPTER_DIR = Path(alt) | |
| break | |
| else: | |
| print("No adapter directories found. Ensure training has run.") | |
| sys.exit(1) | |
| files = list(ADAPTER_DIR.glob("*")) | |
| print(f"Found {len(files)} files in {ADAPTER_DIR}:") | |
| for f in files: | |
| print(f" {f.name} ({f.stat().st_size / 1024:.1f} KB)") | |
| for f in ADAPTER_DIR.glob("*"): | |
| if f.is_file() and not f.name.startswith("."): | |
| print(f"Uploading {f.name}...") | |
| api.upload_file( | |
| path_or_fileobj=str(f), | |
| path_in_repo=f.name, | |
| repo_id=MODEL_REPO, | |
| repo_type="model", | |
| ) | |
| print(f" ✅ {f.name} uploaded") | |
| adapter_config_path = ADAPTER_DIR / "adapter_config.json" | |
| if not adapter_config_path.exists(): | |
| import json | |
| minimal_config = { | |
| "base_model_name_or_path": "Qwen/Qwen2.5-1.5B-Instruct", | |
| "bias": "none", | |
| "fan_in_fan_out": False, | |
| "inference_mode": True, | |
| "init_lora_weights": True, | |
| "lora_alpha": 16, | |
| "lora_dropout": 0.0, | |
| "modules_to_save": None, | |
| "peft_type": "LORA", | |
| "r": 8, | |
| "target_modules": ["q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], | |
| "task_type": "CAUSAL_LM" | |
| } | |
| api.upload_file( | |
| path_or_fileobj=json.dumps(minimal_config, indent=2).encode(), | |
| path_in_repo="adapter_config.json", | |
| repo_id=MODEL_REPO, | |
| repo_type="model", | |
| ) | |
| print("✅ Created and uploaded minimal adapter_config.json") | |
| if __name__ == "__main__": | |
| mode = sys.argv[1].strip().lower() if len(sys.argv) > 1 else "all" | |
| if mode in {"all", "adapter"}: | |
| upload_adapter_files() | |
| if mode in {"all", "card"}: | |
| upload_model_card() | |
| print(f"\n✅ Done. Check: https://huggingface.co/{MODEL_REPO}") | |