{
 "nbformat": 4,
 "nbformat_minor": 5,
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "name": "Makata — Tagalog comprehension baselines.ipynb"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "makata": {
   "bundle_sha256": "ac9949705cd1f5f5e6e9e266afb8b6f840c46ae7fab584ba6d8f34d236e05fde",
   "files_sha256": {
    "research/evaluate.py": "347bf36ac11ff45e99338f46c39d17022305d98c2f47f11d3690a7982ad6c05b",
    "research/protocol.py": "3a0db3630ce70484c4523bbf78c6db9f70163ac4d3dbe689ce12120f9251f11e",
    "research/preflight.py": "3fb0615b783abccbff2425812521a72aef092224830ad0a911ce8011e6b0673a",
    "research/baseline-plan.json": "7363f35664b590690b4c7a5a39a70d1f8c48166b8cdc709a1385b01473b57b12",
    "research/requirements.txt": "e487546619e8b7749036d18d38fd3c2bcfdb53c232206b72e4ecae9db11c2dad",
    "research/requirements-colab.txt": "1ff22b1ff471581a0052b80dd8e4079da32660c04c47e8f47591bc1370bd3658",
    "research/fixtures/development.json": "cf22ec6cc0043a53cc6564f05ab959c24874437cff6e353af6f32ebf09b1e24b",
    "research/tests/test_evaluation.py": "9861f1a35a49a111c480a51cf6e448784d6e1c2fcdf932ba528bf7d7548cf871",
    "research/tests/test_colab.py": "351ff5a814abab8439475d55b497f4809c5ba870f159f2ebb2a526543ef89faa",
    "research/colab/run.py": "ea1683104f2aff0356875139aa7d97d70919179438e2f907602cb22adea8d0ef"
   }
  }
 },
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Makata: verified Tagalog comprehension baselines on free Colab\n",
    "\n",
    "Use **Runtime → Change runtime type → T4 GPU** (or another available free NVIDIA GPU).\n",
    "Use only the free tier. No AWS, API credits, paid subscriptions, Drive mount, or public uploads are used.\n",
    "GPU allocation and session lifetime are not guaranteed. Run cells in order and remain present.\n",
    "\n",
    "This notebook embeds the current research source, including unpushed fixes. It preserves the exact\n",
    "FilBench/model/tokenizer/dataset pins, zero-shot prompts, **float32** scoring, batch one and no truncation.\n",
    "CUDA replaces CPU explicitly; TF32 and quantization are disabled. It freezes a separate GPU execution\n",
    "profile before candidate weights or benchmark examples load. All results remain private to this runtime\n",
    "until **you download them**. A terminated runtime can lose undownloaded artifacts; incomplete runs do not count.\n",
    "\n",
    "First validate the environment and both candidates on 20 **synthetic development questions**.\n",
    "Only the later baseline cells access the full 900-question held-out dataset. Do not tune against those results.\n"
   ],
   "id": "makata-00"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Verify and unpack the reviewed source; check GPU assignment"
   ],
   "id": "makata-01"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "import base64, hashlib, io, json, os, pathlib, subprocess, sys, uuid, zipfile\n",
    "\n",
    "# This allowlisted snapshot includes unpushed fixes, not your entire repository.\n",
    "PAYLOAD = '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'\n",
    "BUNDLE_SHA256 = 'ac9949705cd1f5f5e6e9e266afb8b6f840c46ae7fab584ba6d8f34d236e05fde'\n",
    "data = base64.b64decode(PAYLOAD)\n",
    "assert hashlib.sha256(data).hexdigest() == BUNDLE_SHA256\n",
    "ROOT = pathlib.Path('/content') / ('makata-' + BUNDLE_SHA256[:12])\n",
    "ROOT.mkdir(parents=True, exist_ok=True)\n",
    "with zipfile.ZipFile(io.BytesIO(data)) as archive:\n",
    "    manifest = json.loads(archive.read('bundle-manifest.json'))\n",
    "    assert set(archive.namelist()) == set(manifest['files_sha256']) | {'bundle-manifest.json'}\n",
    "    for name, expected in manifest['files_sha256'].items():\n",
    "        target = (ROOT / name).resolve()\n",
    "        assert target.is_relative_to(ROOT.resolve())\n",
    "        content = archive.read(name)\n",
    "        assert hashlib.sha256(content).hexdigest() == expected\n",
    "        target.parent.mkdir(parents=True, exist_ok=True)\n",
    "        if target.exists():\n",
    "            assert target.read_bytes() == content, 'Existing source differs; start a fresh runtime.'\n",
    "        else:\n",
    "            target.write_bytes(content)\n",
    "(ROOT / 'bundle-manifest.json').write_text(json.dumps(manifest, indent=2))\n",
    "os.environ['CUDA_VISIBLE_DEVICES'] = '0'\n",
    "os.environ['HF_HUB_DISABLE_TELEMETRY'] = '1'\n",
    "SESSION = ROOT / 'research/runs' / ('colab-' + uuid.uuid4().hex[:12])\n",
    "SESSION.mkdir(parents=True)\n",
    "subprocess.run(['nvidia-smi'], check=True)\n",
    "print('Source verified:', BUNDLE_SHA256)\n",
    "print('Result session:', SESSION)\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-02"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Install the isolated pinned Linux/CUDA environment\n",
    "Downloads several GB of dependencies. The notebook kernel is not the research interpreter."
   ],
   "id": "makata-03"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "# Research packages stay separate from Colab's changing preinstalled environment.\n",
    "subprocess.run([sys.executable, '-m', 'pip', 'install', '--quiet', 'uv==0.11.28'], check=True)\n",
    "UV = [sys.executable, '-m', 'uv']\n",
    "ENV = ROOT / 'research/.venv'\n",
    "PY = ENV / 'bin/python'\n",
    "if not PY.exists():\n",
    "    subprocess.run(UV + ['venv', '--python', '3.12.13', str(ENV)], check=True)\n",
    "UPSTREAM = ROOT / 'research/.cache/filbench-lighteval'\n",
    "if not UPSTREAM.exists():\n",
    "    UPSTREAM.parent.mkdir(parents=True, exist_ok=True)\n",
    "    subprocess.run(['git', 'clone', 'https://github.com/filbench/lighteval.git', str(UPSTREAM)], check=True)\n",
    "subprocess.run(['git', '-C', str(UPSTREAM), 'checkout', '7ad52795d7d218d4679f93a019b58dde4b749c5b'], check=True)\n",
    "subprocess.run(UV + ['pip', 'sync', '--python', str(PY), '--torch-backend', 'cu126', 'requirements-colab.txt'],\n",
    "               cwd=ROOT / 'research', check=True)\n",
    "subprocess.run(UV + ['pip', 'check', '--python', str(PY)], check=True)\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-04"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Run offline protocol tests; freeze the GPU execution profile"
   ],
   "id": "makata-05"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "subprocess.run([str(PY), '-m', 'unittest', 'discover', '-s', 'research/tests', '-v'], cwd=ROOT, check=True)\n",
    "import shutil\n",
    "\n",
    "def archive_results():\n",
    "    # Includes manifests/logs/results, never model weights, caches, or environments.\n",
    "    destination = '/content/makata-results-' + SESSION.name\n",
    "    shutil.make_archive(destination, 'zip', root_dir=SESSION)\n",
    "    return destination + '.zip'\n",
    "\n",
    "def stage(command, candidate=0):\n",
    "    log = SESSION / (command + '-' + str(candidate) + '.log')\n",
    "    try:\n",
    "        with log.open('w') as output:\n",
    "            result = subprocess.run([str(PY), str(ROOT / 'research/colab/run.py'), command,\n",
    "                                     '--session', str(SESSION), '--candidate', str(candidate)],\n",
    "                                    cwd=ROOT, stdout=output, stderr=subprocess.STDOUT, timeout=14400)\n",
    "        print(log.read_text()[-6000:])\n",
    "        result.check_returncode()\n",
    "    finally:\n",
    "        print('Local runtime archive:', archive_results())\n",
    "\n",
    "def download_results():\n",
    "    from google.colab import files\n",
    "    files.download(archive_results())\n",
    "\n",
    "stage('freeze')\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-06"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Verify Qwen and Sailor2 on development data only\n",
    "Downloads each pinned checkpoint. Candidate runs execute in separate processes to release GPU memory."
   ],
   "id": "makata-07"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "stage('smoke', 0)\n",
    "stage('smoke', 1)\n",
    "download_results()\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-08"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Qwen: full 900-question baseline\n",
    "Proceed only if both smoke checks succeeded. A four-hour timeout applies. No partial subset or CPU fallback is allowed."
   ],
   "id": "makata-09"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "stage('evaluate', 0)\n",
    "download_results()\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-10"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. Sailor2: full 900-question baseline\n",
    "Keep the first downloaded archive before starting this run."
   ],
   "id": "makata-11"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "stage('evaluate', 1)\n",
    "download_results()\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-12"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Confirm evidence and retain the final archive\n",
    "A successful milestone requires two verified 900-question runs, not the synthetic pilot scores."
   ],
   "id": "makata-13"
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "for index in (0, 1):\n",
    "    marker = json.loads((SESSION / ('baseline-' + str(index) + '.json')).read_text())\n",
    "    directory = pathlib.Path(marker['directory'])\n",
    "    saved = json.loads((directory / 'manifest.json').read_text())\n",
    "    metrics = json.loads((directory / 'metrics.json').read_text())\n",
    "    assert saved['status'] == 'complete' and saved['sample_count'] == 900\n",
    "    print(saved['configuration']['model'], metrics['official_task_metrics'])\n",
    "download_results()\n",
    "print('Download finished? Then use Runtime → Disconnect and delete runtime to release the GPU.')\n"
   ],
   "execution_count": null,
   "outputs": [],
   "id": "makata-14"
  }
 ]
}
