walidsobhie-code commited on
Commit
a8f2981
·
1 Parent(s): 65c52b2

fix: remove Google Drive mount (Colab-only) - use Kaggle output + GitHub push instead

Browse files

- Removed google.colab dependency (doesn't work on Kaggle)
- Added GitHub push cell to save model permanently
- Added warning to download outputs before session expires
- Kaggle-compatible now

Files changed (1) hide show
  1. kaggle_train_stack29_v5.ipynb +60 -14
kaggle_train_stack29_v5.ipynb CHANGED
@@ -52,15 +52,15 @@
52
  "metadata": {},
53
  "outputs": [],
54
  "source": [
55
- "# Mount Google Drive to save outputs permanently\n",
56
- "from google.colab import drive\n",
57
- "drive.mount('/content/drive')\n",
58
  "\n",
59
- "# Create permanent output directory in Google Drive\n",
60
- "DRIVE_OUTPUT_DIR = '/content/drive/MyDrive/stack-2.9-output'\n",
61
- "os.makedirs(DRIVE_OUTPUT_DIR, exist_ok=True)\n",
62
  "\n",
63
- "print(f\"\u2705 Google Drive mounted: {DRIVE_OUTPUT_DIR}\")\n"
 
64
  ]
65
  },
66
  {
@@ -213,16 +213,62 @@
213
  "print(f'Merged model: {merged_dir}')\n",
214
  "!ls -lh {merged_dir}\n",
215
  "\n",
216
- "# Copy merged model to Google Drive\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
217
  "import shutil\n",
218
- "drive_merge_dir = os.path.join(DRIVE_OUTPUT_DIR, 'merged')\n",
 
 
219
  "if os.path.exists(merged_dir):\n",
220
- " if os.path.exists(drive_merge_dir):\n",
221
- " shutil.rmtree(drive_merge_dir)\n",
222
- " shutil.copytree(merged_dir, drive_merge_dir)\n",
223
- " print(f\"\u2705 Model copied to Google Drive: {drive_merge_dir}\")\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  "else:\n",
225
- " print(\"\u26a0\ufe0f Merged model not found, skipping Drive copy\")\n"
226
  ]
227
  },
228
  {
 
52
  "metadata": {},
53
  "outputs": [],
54
  "source": [
55
+ "# Save to Kaggle output (download before session ends!)\n",
56
+ "# Kaggle sessions expire after 9 hours - download outputs immediately!\n",
 
57
  "\n",
58
+ "# Create a symbolic link to make paths easier\n",
59
+ "OUTPUT_DIR = os.path.join(REPO_DIR, 'training_output')\n",
60
+ "os.makedirs(OUTPUT_DIR, exist_ok=True)\n",
61
  "\n",
62
+ "print(f\"\u2705 Output directory: {OUTPUT_DIR}\")\n",
63
+ "print(\"\u26a0\ufe0f IMPORTANT: Download outputs from 'Output' tab before session expires!\")\n"
64
  ]
65
  },
66
  {
 
213
  "print(f'Merged model: {merged_dir}')\n",
214
  "!ls -lh {merged_dir}\n",
215
  "\n",
216
+ "print(\"\\n\u26a0\ufe0f DOWNLOAD THE MODEL NOW: Go to Output tab and download 'merged' folder!\")\n"
217
+ ]
218
+ },
219
+ {
220
+ "cell_type": "code",
221
+ "execution_count": null,
222
+ "metadata": {},
223
+ "outputs": [],
224
+ "source": [
225
+ "# Push merged model to GitHub LFS (optional - for permanent storage)\n",
226
+ "# This saves the model to your GitHub repo so you can download anytime\n",
227
+ "\n",
228
+ "# Configure Git LFS\n",
229
+ "!git lfs install 2>/dev/null || echo 'Git LFS already installed'\n",
230
+ "\n",
231
+ "# Clone the repo if not already there\n",
232
+ "import subprocess\n",
233
+ "repo_url = 'https://github.com/my-ai-stack/stack-2.9.git'\n",
234
+ "local_repo = '/kaggle/working/stack-2.9-repo'\n",
235
+ "\n",
236
+ "if not os.path.exists(local_repo):\n",
237
+ " subprocess.run(['git', 'clone', repo_url, local_repo], check=True)\n",
238
+ "\n",
239
+ "# Copy merged model to repo\n",
240
  "import shutil\n",
241
+ "target_dir = os.path.join(local_repo, 'models/stack-2.9-finetuned')\n",
242
+ "os.makedirs(target_dir, exist_ok=True)\n",
243
+ "\n",
244
  "if os.path.exists(merged_dir):\n",
245
+ " # Copy files\n",
246
+ " for f in os.listdir(merged_dir):\n",
247
+ " src = os.path.join(merged_dir, f)\n",
248
+ " dst = os.path.join(target_dir, f)\n",
249
+ " if os.path.isdir(src):\n",
250
+ " shutil.copytree(src, dst, dirs_exist_ok=True)\n",
251
+ " else:\n",
252
+ " shutil.copy2(src, dst)\n",
253
+ " \n",
254
+ " print(f'\u2705 Copied model to {target_dir}')\n",
255
+ " \n",
256
+ " # Push to GitHub\n",
257
+ " os.chdir(local_repo)\n",
258
+ " subprocess.run(['git', 'add', 'models/stack-2.9-finetuned/'], check=True)\n",
259
+ " subprocess.run(['git', 'config', 'user.email', 'kaggle@kaggle.com'], check=True)\n",
260
+ " subprocess.run(['git', 'config', 'user.name', 'Kaggle Auto-Push'], check=True)\n",
261
+ " subprocess.run(['git', 'commit', '-m', 'feat: add fine-tuned model from Kaggle'], check=True)\n",
262
+ " \n",
263
+ " # Push (you may need a GitHub token for private repos)\n",
264
+ " result = subprocess.run(['git', 'push', 'origin', 'main'], capture_output=True, text=True)\n",
265
+ " if result.returncode == 0:\n",
266
+ " print('\u2705 Model pushed to GitHub!')\n",
267
+ " else:\n",
268
+ " print(f'\u26a0\ufe0f Push failed: {result.stderr}')\n",
269
+ " print(' You can still download from Kaggle Output tab.')\n",
270
  "else:\n",
271
+ " print('\u26a0\ufe0f Merged model not found. Train first!')\n"
272
  ]
273
  },
274
  {