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でgoogle driveの使い方
google colabでgoogle 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ファイルを開き直す
- google driveをマウント
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を取得する
- 手法
from google.colab import auth
モジュールで認証を通す- プロジェクト名(課金先)と取得したデータの格納先変数をセットする
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を有効化する
- 有効化の方法
ランタイム
ランタイムのタイプの変更
ハードウェアのアクセラレータ
GPU
を選択する
出力を消す(隠す)
- 出力を消す方法(ハンバーガーボタン)
- セルのハンバーガーボタンを選択
- 出力を消去
- 出力を消す方法(出力欄)
- 出力欄の左上をホバーするとxボタンが出現する
- xボタンをクリックすると消える
colabのフォントを変更する
- jupyterとは異なり、iframeを使っているようで、
display(HTML())
が動作しない - ブラウザの拡張機能のtempermonkeyをインストール
- tempermonekyのユーザ作成のスクリプトをインストール
細かい使い方
vimのキーバインディング
[ツール]
->[設定]
->[エディタ]
->[vim]を選択
vimiumの特定のキーの無効化
b
が干渉するので無効化
インターネット上の全員に公開
[共有]
->[リンクを取得]
->[変更]から"リンクを知っている全員"を選択
->[完了]
- コメントや提案はフィードバックされるらしい