colab-operator について
colab-operatorは、colab CLIでGoogle Colab環境を操作するスキルです。リモートVMでのコード実行、アクセラレーターセッション管理、ファイル同期に対応し、カーネル状態の保持やノートブックへの記録出力も行えます。
主な機能
- 01GPU・TPUセッションの作成と管理
- 02リモートVMでのPython・シェル実行
- 03ローカルとリモート間のファイル同期
- 04パッケージのインストールと環境設定
- 05セッション履歴のノートブック出力
活用シーン
- 01Colab VMでスクリプトやノートブックを実行
- 02タスク用のGPU・TPU環境を用意
- 03ローカルとリモート環境間でファイルを転送
- 04後から確認できるよう実行履歴を保存
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ googlecolab/ google-colab-cli --skill colab-operatorインストール後、Claude Code で/colab-operatorを入力して読み込まれたか確認します。
詳細
スキル:Colab セッションオペレーター
colab CLI を使用して Google Colab 環境を操作します。GPU/TPU セッションのプロビジョニング、VM 上での Python/シェルの実行、ファイルの同期、作業内容のノートブックへの記録を行います。
インストール
ユーザーが colab ツールをまだインストールしていない場合は、uv tool install google-colab-cli または pip install google-colab-cli を実行してインストールできます。
有効にするタイミング
- TPU/GPU セッションの作成または管理。
- リモート Colab VM での Python またはシェルの実行。
- ローカルとリモート間でのファイル同期。
- 環境セットアップ(パッケージ、認証、Drive)の自動化。
- セッション履歴の Jupyter ノートブックへのエクスポート。
基本的な考え方(最初にお読みください)
- セッションは、レンタルした VM 上で稼働する Jupyter カーネルです。
colab newは課金対象の VM を割り当て、colab stopは VM を解放します。カーネルがアクティブである限りセッションは維持され、Colab バックエンドが自動的に稼働状態を保ちます。 - 同じセッション内では、カーネルの状態が
colab exec/colab replの呼び出しをまたいで維持されます。 呼び出しのたびに同じカーネル(カーネル ID はローカル状態にキャッシュされます)へ再接続し、終了時には WebSocket を閉じるだけです。カーネルは停止しません。そのため、インポートしたモジュール、変数、定義した関数は、別々のcolab execコマンド間でも保持されます。状態は段階的に構築し、呼び出しごとにすべてを再インポートしないでください。(実際にリセットするのはcolab stopとcolab restart-kernelです。) - デフォルトの作業ディレクトリは
/contentです。 すべてのexec/repl/runは、最初にこのディレクトリへcdします。ファイル操作には絶対パス(/content/...)を使用してください。colab ls/rm/upload/downloadでは絶対パスの/content/...が使用でき、lsのデフォルトパスはcontent(VM のルート)です。 colabは実行して終了する方式です。 各コマンドは認証を行い、処理を 1 つ実行して終了します。
認証(エージェントの動作を妨げる最大の要因)
- グローバルフラグは
--auth={adc,oauth2}で、デフォルトはadc(Application Default Credentials)です。サブコマンドより前に指定する必要があります。例:colab --auth=adc new -s x。 - ADC のセットアップ(ヘッドレス環境やエージェントで最も確実です)。Colab バックエンドには特定のスコープの組み合わせが必要なため、次の 4 つすべてのスコープを指定して ADC を再発行します。
4 つすべてが必要な理由:gcloud auth application-default login \ --scopes=openid,\ https://www.googleapis.com/auth/cloud-platform,\ https://www.googleapis.com/auth/userinfo.email,\ https://www.googleapis.com/auth/colaboratoryuserinfo.email(セッションバックエンドcolab.research.google.com用。これがないと 401)、colaboratory(Colab の機能/API 用)、openidとcloud-platform(gcloud 自体が必須としており、cloud-platformを含まないスコープリストを拒否します)。 - oauth2 のセットアップ:初回使用時に
colab --auth=oauth2 <anything>を実行すると、ブラウザーの同意フローが開始されます(トークンは~/.config/colab-cli/token.jsonにキャッシュされます)。クライアント設定ファイル~/.colab-cli-oauth-config.json(または-c PATH)が必要です。ブラウザーでの操作には通常、人間の対応が必要なため、エージェントには ADC を推奨します。 - 一度に認証を確認する:
colab sessions(読み取り専用で、サーバーの割り当てを一覧表示)またはcolab whoami(非表示のデバッグコマンド。現在のメールアドレス、スコープ、オーディエンス、有効期限を表示)を実行します。呼び出しで 401 または 403 が返された場合、ほとんどの場合、原因は認証情報またはスコープの不足です。colab whoamiで即座に確認できます。 - CLI の認証と
colab authを混同しないでください。colab authは、実行中のカーネルに VM 側の GCP 認証情報を渡します(ノートブックのコードから BigQuery/GCS を呼び出せるようにするためのものです)。CLI 自体の認証とは別のものです。CLI の 401/403 を解決するために「colab authを実行してください」と案内してはいけません。問題はスコープまたは ID にあり、上記のgcloudコマンドで解決します。
ワークフロー
プロビジョニング
colab new -s <name>(CPU)。アクセラレーターを使用するには、--gpu A100または--tpu v6e1を追加します。必ず-s <name>を指定してください。名前を省略するとランダムな6桁の16進数が自動生成され、後続のコマンドで指定が曖昧になります。- 対応する
--gpu:T4、L4、G4、H100、A100。対応する--tpu:v5e1、v6e1。 - 注意点:認識されない
--gpuの値を指定すると、何も通知されずに A100 にフォールバックします(その後のステップで通常は失敗します)。アクセラレーターを指定したcolab newが400を返す場合、このアカウントにはそのアクセラレーターを利用する割り当て量または権限がありません。--gpu T4に切り替えるか、フラグを省略してCPUを使用してください。 - アクセラレーターの利用可否はプランによって異なり、ほとんどのアカウントで利用できるのはCPUのみです。GPU/TPUが割り当てられるとは限りません。
実行
- 推奨:
colab exec -s <name> -f <script.py>は、ローカルのスクリプトをリモートVM上で実行します(ローカルで読み込んでカーネルに送信するため、手動でのアップロードは不要です)。 - パイプでコードを渡す:
echo "print(1)" | colab exec -s <name>またはcat script.py | colab exec -s <name>。 - ノートブック:
colab exec -s <name> -f nb.ipynbは各コードセルを実行し、入力ファイルと同じ場所に<basename>_output.ipynbとして結果を書き込みます。先頭行に# @title Fooを指定すると、実行状況の出力でセルにラベルが付けられます。 - プロット/画像:PNG/JPEGの出力は捕捉されます。既知の場所に保存するには、
exec/replで--output-image <path>を使用します(指定しない場合は一時パスが出力されます)。標準出力がTTYでない場合は、インラインのターミナル画像エスケープが自動的に抑制されるため、パイプ出力やキャプチャーした出力が汚れません。 - シェル:バッチシェルには
echo "cmd" | colab console -s <name>を使用します。Consoleはbashをtmuxで実行するため、パイプ経由の出力にもターミナル制御バイトが含まれます。特定の行を抽出するにはgrep -aでフィルタリングしてください。通常のシェルが不要であれば、execのほうが高速です。 - エージェントから
colab repl、colab console、colab auth、colab drivemountを対話的に実行しないでください。TTYが必要なため、ハングします。repl/consoleはパイプ経由の標準入力を受け付け、EOFで終了します。auth/drivemountは実際にターミナル上で人間が操作する必要があります。
一時的な単発ジョブ(colab run)
colab run [--gpu T4] [--tpu v6e1] [--keep] [-s NAME] script.py [args...]は、new+exec+stopを1つのコマンドで実行します。新しいVMをプロビジョニングし、ネイティブのpython script.py argsと同様にsys.argvと__name__ == "__main__"を設定してスクリプトを実行した後、VMを破棄します(--keepを指定した場合を除く)。- 終了コードは引き継がれます:スクリプト内で例外が捕捉されない場合や
sys.exit(N)が呼び出された場合、colab runはゼロ以外の終了コードで終了します(CPythonの仕様:sys.exit()/sys.exit(0)→ 0、sys.exit(N)→ N、sys.exit("msg")→ 1)。 - ストリームの分離:
colab run自身の[colab] ...のメッセージは stderr に、スクリプトの出力は stdout に書き込みます。そのため、colab run job.py > out.txtではスクリプトのstdoutのみがキャプチャされます(colab execはスクリプトのstdout/stderrをライブで、それぞれstdout/stderrにストリームします)。 - シバンとして使用できます:
#!/usr/bin/env -S colab run --gpu T4を指定すると、chmod +xを実行した.pyを、GPUを借りて実行し、後片付けを行う自己完結型のスクリプトにできます。CLIの動作を編集した後にシバンをテストする場合は、先に再インストールしてください。シバンは編集可能なインストールではなく、$PATH経由でcolabを解決するためです。 - 存在しないスクリプトパスを指定すると、VMを割り当てる前にゼロ以外の終了コードで終了します(計算リソースを無駄に消費しません)。
自動化
colab auth -s <name>— VM上のGCP認証情報を設定します。VM内からGCS/BigQueryを呼び出す前に必要です(対話型のため、エージェントからは実行できません)。colab drivemount -s <name> [PATH]— Driveをデフォルトで/content/driveにマウントします(対話型のため、エージェントからは実行できません)。colab install -s <name> pkg1 pkg2—uv pip install --systemでインストールし、失敗した場合はpipにフォールバックします。colab install -s <name> -r requirements.txtも使用できます。
確認とレポート
colab help(またはcolab help <cmd>)を実行すると、コマンドの一覧と説明が表示されます。一覧はアルファベット順です。colab sessionsを実行すると、サーバー側の割り当てが一覧表示され、古いローカルエントリーは自動的に削除されます。ローカルの記録がない孤立したセッションは[?]と表示されます。colab status [-s <name>]を実行すると、ハードウェア、IDLE/BUSY、最後の実行が表示されます。colab log -s <name> [-n 20] [-t TYPE]を実行すると、最近の構造化イベントが表示されます。タスクが失敗した場合に非常に役立ちます。colab log -s <name> -o summary.ipynbを実行すると、セッションがノートブックとしてエクスポートされます(拡張子に応じて.md、.txt、.jsonlでもエクスポートできます)。colab url -s <name>を実行すると、新しい VM を割り当てる代わりに、既存の CLI セッションに Colab ウェブ UI を接続するブラウザー URL が表示されます(起動するには--openを追加します)。colab skill/colab readmeを実行すると、このスキルと README が表示されます(自分で情報を確認するときに便利です)。
安全性
- 完了したら必ず
colab stop -s <name>を実行してください — アイドル状態の VM はコンピューティングユニットを消費します。colab run(--keepを指定しない場合)は、スクリプトがエラーになっても自動的にクリーンアップします。 - ローカルの状態は
~/.config/colab-cli/sessions.jsonに保存されます(設定はsettings.json、履歴はhistory/*.jsonlに保存されます)。手作業で編集しないでください。 - 並列実行やエージェントの実行は、グローバルな
--config <path>フラグを使ってセッションの状態を一時ファイルに保存し、分離してください(例:colab --config /tmp/agent.json new -s job)。
復旧
- exec で「Session not found」/404/401 が発生した場合、バックエンドによって VM が削除されています。
colab exec/replはこれを検出し、ローカルの状態を自動的にクリーンアップします。colab sessionsを実行し、colab newで再作成してください。 - 実行がタイムアウトした場合やカーネルが応答しなくなった場合は、
colab restart-kernel -s <name>を実行します(VM は維持され、カーネルがリセットされます)。または、colab stopを実行してからcolab newを実行してください。
コメント
Markdown 対応