{"cells": [{"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# expJ00: Download Model from HF and Save (ONLINE)\n# Downloads nawta/expJ00-ft-fold0 from HF, saves to /kaggle/working/expJ00-model/\n# No inference here - inference is done in the offline notebook.\n\nimport os\n\n# HF_TOKEN for private repo access\nHF_TOKEN = None\ntry:\n    from kaggle_secrets import UserSecretsClient\n    secrets = UserSecretsClient()\n    HF_TOKEN = secrets.get_secret(\"HF_TOKEN\")\n    print(\"HF_TOKEN obtained from Kaggle Secrets\")\nexcept Exception as e:\n    print(f\"kaggle_secrets failed: {e}\")\n    HF_TOKEN = os.environ.get(\"HF_TOKEN\", None)\n    if HF_TOKEN:\n        print(\"HF_TOKEN obtained from environment variable\")\n\nif HF_TOKEN:\n    os.environ[\"HF_TOKEN\"] = HF_TOKEN\n\nimport torch\nfrom transformers import AutoTokenizer, AutoModelForSeq2SeqLM\n\nREPO_ID = \"nawta/expJ00-ft-fold0\"\nSAVE_DIR = \"/kaggle/working/expJ00-model\"\n\nprint(f\"PyTorch: {torch.__version__}, CUDA: {torch.cuda.is_available()}\")\nif torch.cuda.is_available():\n    print(f\"GPU: {torch.cuda.get_device_name(0)}, {torch.cuda.get_device_properties(0).total_memory/1e9:.1f} GB\")\n\n# Download and load model in BF16\nprint(f\"\\nDownloading {REPO_ID} from HF...\")\nmodel = AutoModelForSeq2SeqLM.from_pretrained(\n    REPO_ID, torch_dtype=torch.bfloat16, token=HF_TOKEN,\n)\ntokenizer = AutoTokenizer.from_pretrained(REPO_ID, token=HF_TOKEN)\n\nnum_params = sum(p.numel() for p in model.parameters())\nprint(f\"Model loaded: {num_params:,} parameters\")\n\n# Save to /kaggle/working/ so it appears as output\nprint(f\"\\nSaving model to {SAVE_DIR}...\")\nos.makedirs(SAVE_DIR, exist_ok=True)\nmodel.save_pretrained(SAVE_DIR)\ntokenizer.save_pretrained(SAVE_DIR)\n\n# Verify\nsaved_files = os.listdir(SAVE_DIR)\nprint(f\"\\nSaved files: {saved_files}\")\nassert \"config.json\" in saved_files, \"config.json not found!\"\nprint(\"\\nModel saved successfully.\")"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"name": "python", "version": "3.10.0"}}, "nbformat": 4, "nbformat_minor": 4}