• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

google colab

date: 2021-02-20 excerpt: google colabの使い方

tag: jupytergoogle colabcolab


google colabの使い方

概要

  • google製のjupyter notebook
    • 微妙なところに差分がある
  • colabを仕事で使うには、colabがセキュリティ要件をクリアしているか確認する必要がある
    • Google WorkspaceとGCPがガイドラインに従って運用されている組織であれば適合しやすい

便利な点

  • サーバレスで自分でコンピューティング資源を確保しなくて良い
  • 共有が楽であり、実際に行った実験等のシェアに便利
  • GPUが無料で使える

注意すべき点

  • デフォルトでは少し古いバージョンのpythonがインストールされている
    • match caseなど最新の文法が使えないことがある
  • /pandas-gbq/の認証方法が異なる
  • terminalが無料版では使えない
    • 有料のproでは使える
  • 数分でセッションがリセットされる
    • セッションがリセットされるとapt-get, pipでインストールしたものも消える
    • プロ版は12時間以上持つらしい
  • HTML関数を使ったcssのオーバーライドは動作しない
    • iframeで情報をやり取りしているためらしい
  • pandasのquery関数がengineを指定しないと動作しない

google colabかjupyter notebookなのかをコードベースで判別する

  • google colabにしかない環境変数を参考にすることで分岐できる
  • os.environで確認できる
    • COLAB_RELEASE_TAGなどが判別条件として使える
if "COLAB_RELEASE_TAG" in os.environ:
    print("google colabで実行")
else:
    print("local jupyterでの実行")

Formを使用する

  • /google-colab-form/

google colabでgoogle driveの使い方

  • /google-colab-drive/

google colabでgoogle spreadsheetの使い方

  • /google-colab-spreadsheet/

Google Colabのipynbファイルにblack(リンター)を適応する

  • 手順
    • google driveをマウント
      • /content/drive/MyDrive/Colab Notebooks/に編集中のipynbファイルが保存される
      • 編集中のファイル名に明示的にipynbの拡張子をつけていないとblackが適応できない
    • コマンドを実行
      • !pip install "black[jupyter]"
      • !black "/content/drive/MyDrive/Colab Notebooks/foo-bar.ipynb"
    • 外部から編集されることになるので、ipynbファイルを開き直す

pandas-gbqの認証を行う

  • local jupyterとの違い
    • import pydata_google_authで明示的にクレデンシャルを取り出す必要なはない
    • from google.colab import authを使用する
  • Googleアカウントとの関連
    • Google Colabを動作させているアカウントと、認証しているアカウントの権限が一致していないとエラーが発生し正しく動作しない
from google.colab import auth
auth.authenticate_user()

query = """
...
"""
projectid = '<your-project>'
df = pd.read_gbq(query, projectid, dialect='standard', use_bqstorage_api=True,)

BigQueryにクエリを送り、pandas dataframeを取得する

  • 手法
    1. from google.colab import authモジュールで認証を通す
    2. プロジェクト名(課金先)と取得したデータの格納先変数をセットする

1. 認証を通す

from google.colab import auth
from google.cloud import bigquery
from google.colab import data_table

project = "<your-project>"
location = "asia-northeast1"
client = bigquery.Client(project=project, location=location)
data_table.enable_dataframe_formatter()
auth.authenticate_user()

2. クエリを実行し、dfというpandasのdataframeに結果を格納

df = client.query('''
SELECT
  user_id,
  user.ua as ua,
  event.name as event_name,
  event.payload.push_notification_status as push_notification_status,
  user.device.category as device_cat,
  content.page.type as page_type,
  ts.utc.raw as ts_utc,
  ts.jst.raw as ts_jst,
FROM
  `<your-project>.<your-bucket>.<table>`
WHERE
  DATE(ts.jst.raw) = "2022-12-01" 
ORDER BY
  user_id,
  ts.jst.raw
''').to_dataframe()
df

Colabで出力したファイルのダウンロード

  • 出力したファイルはcolabのサーバサイドに保存されるのでGoogle Driveでは見えない
  • 専用の関数でダウンロードする
df.to_csv("filename.csv")
from google.colab import files
files.download("filename.csv") # ダウンロード

GPUを有効化する

  • 有効化の方法
    1. ランタイム
    2. ランタイムのタイプの変更
    3. ハードウェアのアクセラレータ
    4. GPUを選択する

出力を消す(隠す)

  • 出力を消す方法(ハンバーガーボタン)
    1. セルのハンバーガーボタンを選択
    2. 出力を消去
  • 出力を消す方法(出力欄)
    1. 出力欄の左上をホバーするとxボタンが出現する
    2. xボタンをクリックすると消える

colabのフォントを変更する

  • jupyterとは異なり、iframeを使っているようで、display(HTML())が動作しない
  • ブラウザの拡張機能のtempermonkeyをインストール
  • tempermonekyのユーザ作成のスクリプトをインストール

細かい使い方

vimのキーバインディング

  • [ツール] -> [設定] -> [エディタ] -> [vim]を選択

vimiumの特定のキーの無効化

  • bが干渉するので無効化

インターネット上の全員に公開

  • [共有] -> [リンクを取得] -> [変更]から"リンクを知っている全員"を選択 -> [完了]
    • コメントや提案はフィードバックされるらしい

参考

  • Colab でデータを探索する/Google Cloud


jupytergoogle colabcolab Share Tweet