# Hugging Face Hub Upload Instructions — CortexFM Step-by-step instructions to push the CortexFM checkpoint and model card to the Hugging Face Hub after you obtain a user access token. ## 0. Prerequisites - An active Hugging Face account at . - A **write-scope** user access token from . - WSL Ubuntu 24.04 (or any POSIX shell) with `git` and `python` ≥ 3.10. - Locally available checkpoint at `~/cortex-fm/runs/pretrain_v1/ckpt/epoch28-0.2599.ckpt` (58 MB; LaTeX reports 60.7 MB — both refer to the same file, MB vs MiB rounding). - This `src/release/hf/` directory containing `README.md`, `model_card.md`, `LICENSE`, `.gitattributes`, and `upload_instructions.md`. ## 1. Install Hugging Face CLI and Git LFS ```bash pip install --upgrade "huggingface_hub[cli]" sudo apt-get install -y git-lfs # or: brew install git-lfs (macOS) git lfs install --skip-repo # initialize LFS hooks for the user ``` Verify: ```bash huggingface-cli --version # expect: huggingface_hub version ... git lfs version # expect: git-lfs/3.x ... ``` ## 2. Authenticate ```bash huggingface-cli login ``` When prompted, paste the **write-scope** token. Choose `n` when asked "Add token as git credential" if you prefer not to store it in `~/.git-credentials`; in that case you will be prompted to enter the token again at the first `git push`. ## 3. Create the model repository **Option A — via CLI:** ```bash huggingface-cli repo create CortexFM --type model # repo URL appears as: https://huggingface.co//CortexFM ``` **Option B — via web UI:** Go to , choose "Model", name it `CortexFM`, leave the rest at defaults, and click "Create model". Replace `` in the next step with your actual Hugging Face username (or organization). ## 4. Clone the empty repository ```bash cd ~ git clone https://huggingface.co//CortexFM cd CortexFM ``` If you skipped the git-credential store in step 2, git will now prompt for your username and the token (used as the password). ## 5. Configure LFS tracking ```bash git lfs install git lfs track "*.ckpt" git lfs track "*.pt" git lfs track "*.safetensors" # .gitattributes is now updated with the LFS patterns ``` Or simply copy the prepared `.gitattributes` from this `hf/` directory in step 6. ## 6. Copy release files into the repository Assuming this project lives at `/mnt/e/projects/school\ 1/` (typical WSL mount of `E:\projects\school 1\`): ```bash HF_SRC="/mnt/e/projects/school 1/src/release/hf" cp "$HF_SRC/README.md" . cp "$HF_SRC/model_card.md" . cp "$HF_SRC/LICENSE" . cp "$HF_SRC/.gitattributes" . cp "$HF_SRC/upload_instructions.md" . # optional — uploaders may keep this for reference # Optional FALCON wrapper reference mkdir -p benchmark_wrapper cp "$HF_SRC/benchmark_wrapper/"*.py benchmark_wrapper/ 2>/dev/null || true ``` ## 7. Copy the checkpoint ```bash cp ~/cortex-fm/runs/pretrain_v1/ckpt/epoch28-0.2599.ckpt . ``` Verify the file is LFS-tracked **before** committing: ```bash git lfs status # expect: "epoch28-0.2599.ckpt" listed under "Objects to be committed" git check-attr filter epoch28-0.2599.ckpt # expect: epoch28-0.2599.ckpt: filter: lfs ``` If the file is **not** showing `filter: lfs`, re-run `git lfs track "*.ckpt"` and `git add .gitattributes` before adding the checkpoint. ## 8. Compute and record the checksum (recommended) ```bash sha256sum epoch28-0.2599.ckpt > epoch28-0.2599.ckpt.sha256 ``` Add the hash to the model card or commit it alongside the weights for downstream integrity verification. ## 9. Commit and push ```bash git add .gitattributes README.md model_card.md LICENSE git add epoch28-0.2599.ckpt epoch28-0.2599.ckpt.sha256 git add upload_instructions.md 2>/dev/null || true git add benchmark_wrapper/ 2>/dev/null || true git commit -m "Initial CortexFM release (pretrain_v1, epoch28-0.2599.ckpt)" git push origin main ``` The first push uploads the checkpoint to LFS storage; expect a few seconds to a few minutes depending on bandwidth. ## 10. Verify on the Hub Open `https://huggingface.co//CortexFM` in a browser: - The model card (README.md) should render with the YAML frontmatter parsed into a sidebar (tags, license, datasets, metrics). - The checkpoint should show "Stored with Git LFS" and a download icon. - The `LICENSE` file should be linked from the sidebar. - Tags `brain-computer-interface`, `foundation-model`, `neural-decoding`, `transformer`, `cross-modal` should appear. ## 11. (Optional) Smoke-test the public download From a clean directory: ```bash pip install huggingface_hub python - <<'PY' from huggingface_hub import hf_hub_download path = hf_hub_download(repo_id="/CortexFM", filename="epoch28-0.2599.ckpt") print("Downloaded to:", path) # Optional: load the Lightning module if cortex_fm is on PYTHONPATH # import torch # from cortex_fm.training import CortexFMPretrainModule # m = CortexFMPretrainModule.load_from_checkpoint(path, map_location="cpu", strict=True) # print("Params:", sum(p.numel() for p in m.parameters())) # expect 5,044,994 PY ``` ## 12. Post-upload housekeeping - Add the Hugging Face Hub link to the thesis Chapter 5 §5.5 "Public checkpoint" section, replacing the DOI placeholder `10.xxxx/cortexfm-pretrain-v1`. - Mirror to Zenodo for a permanent DOI if desired (Hugging Face → Zenodo "Mint a DOI" feature is automated for organizations only; for personal accounts, manually upload to ). - Announce the release (optional): tag the Hugging Face card on `r/MachineLearning`, post on the FALCON Discord, or link from the project's GitHub. --- ## Troubleshooting **Checkpoint pushed but shows as raw file (not LFS):** You added the checkpoint before configuring LFS tracking. Run: ```bash git rm --cached epoch28-0.2599.ckpt git lfs track "*.ckpt" git add .gitattributes epoch28-0.2599.ckpt git commit -m "Move checkpoint to Git LFS" git push origin main ``` **`git push` rejected with "this repository is over its data quota":** Hugging Face free accounts have generous quotas but very large checkpoints may need plan upgrades or splitting. CortexFM at 60.7 MB is well within all free-tier limits. **`huggingface-cli login` fails with `401 Unauthorized`:** The token must have **write** scope. Re-issue at with role = "Write". **LFS object missing on download:** Run `git lfs fetch && git lfs checkout` inside the clone. If the issue persists, check the repository's LFS files page on the Hub. --- ## Summary checklist - [ ] HF account + write token - [ ] `huggingface-cli login` succeeds - [ ] Repository `CortexFM` created on Hub - [ ] Local clone has `.gitattributes` with `*.ckpt filter=lfs ...` - [ ] `README.md`, `model_card.md`, `LICENSE` copied - [ ] Checkpoint copied and `git check-attr filter` reports `lfs` - [ ] SHA-256 checksum recorded (recommended) - [ ] Initial commit pushed - [ ] Browser verification: card renders, weights downloadable, license visible - [ ] Thesis Chapter 5 §5.5 DOI placeholder updated with HF URL