はじめに:ローカル環境を汚さずにクラウドGPUでバッチを回す
数万件のスクレイピング検証、重いオープンモデルの推論テスト、大量の画像・音声バッチ処理を手元のPC(ノートPCやWSL環境)で長時間実行すると、ファンの騒音、ストレージ圧迫、CPU/GPU負荷による通常業務の中断が発生します。
Google Colab(無料枠およびPro)のクラウドGPUランタイムとGoogle Driveストレージを連携させることで、手元のマシンを一切拘束せずに、安全かつ高速にバッチ処理を完結させる自動化手法を解説します。
1. Google Drive永続化マウントと自動環境構築
Colabの最大の注意点は「セッション切断時にインスタンス内のファイルが消失する」ことです。 処理の開始時にGoogle Driveをマウントし、入出力データをDrive上に配置することで、途中で切断されてもデータが確実に保護されます。
ノートブック先頭セル(共通定型コード)
# 1. Google Driveのマウント
from google.colab import drive
import os
drive.mount('/content/drive')
# 2. 作業ディレクトリをDrive上の専用フォルダに設定
WORKSPACE_DIR = "/content/drive/MyDrive/cdnt_batch_workspace"
os.makedirs(WORKSPACE_DIR, exist_ok=True)
%cd {WORKSPACE_DIR}
# 3. 必要なライブラリの自動インストール
!pip install -q aiohttp pydantic sentence-transformers faster-whisper
2. アイドル切断を防ぎ安全にバッチを実行するPython設計
import time
import json
def batch_process_with_checkpoint(data_list, output_file="results.jsonl"):
# 既に処理済みのIDをロード(レジューム機能)
processed_ids = set()
if os.path.exists(output_file):
with open(output_file, "r", encoding="utf-8") as f:
for line in f:
item = json.loads(line)
processed_ids.add(item["id"])
print(f"スキップ済み件数: {len(processed_ids)} / 全 {len(data_list)} 件")
with open(output_file, "a", encoding="utf-8") as out:
for idx, item in enumerate(data_list):
if item["id"] in processed_ids:
continue
# 実際の重い処理(AI推論等)
result = heavy_inference(item)
item["result"] = result
# 1件ごとにDriveへフラッシュ書き込み
out.write(json.dumps(item, ensure_ascii=False) + "\n")
out.flush()
このチェックポイント設計により、Colabが無料枠の時間制限で切断された場合でも、再接続後に直前の続きから瞬時に処理を再開できます。