Google Colaboratory活用まとめ|Drive連携・GPU・MeCab・Selenium
/ 6 min read
Table of Contents
はじめに
Google Colaboratory(Colab)でよく使う設定を、1本にまとめ直しました。
Driveとのデータのやり取り、セッション切れ対策、GPU環境、日本語形態素解析、スクレイピングという構成です。必要なところだけ拾って読んでください。
Google Driveとデータをやり取りする
マウントする
まずDriveをマウントします。実行すると認証を求められます。
from google.colab import drive
drive.mount("/content/drive")Drive上のファイルを読み込む
import pandas as pd
df = pd.read_csv("/content/drive/My Drive/hoge/fuga.csv")Driveへ書き出す
base_dir = "/content/drive/My Drive/hoge/"file_name = "fuga.csv"
df.to_csv(base_dir + file_name, index=False)パスの My Drive には半角スペースが入っている点に注意してください。ここでつまずくことが多いです。
index=False を付けておかないと、書き出したCSVに余計なインデックス列が入ります。読み込み直したときに Unnamed: 0 という列が増えていたら、これが原因です。
90分セッション対策
Colabはブラウザを放置すると切断されます。学習を回している間に落とされないための対策です。
- ブラウザの拡張機能で自動更新系のアドオンを入れておく
- ノートブックのメニューから
ランタイム > ランタイムのタイプを変更を開き、「このノートブックを保存する際にコードセルの出力を除外する」にチェックを入れる - 最初のリロード時だけ手動で再読み込みする
2は出力が溜まってノートブックが重くなるのを防ぐためです。長時間の学習ログを出しっぱなしにすると、保存のたびに重くなって結局切れます。
GPUを使う
まず ランタイム > ランタイムのタイプを変更 でハードウェアアクセラレータをGPUにします。ここを切り替えないと、以下のインストールをしてもGPUは使われません。
PyTorch
公式の Get Started で自分の環境に合うコマンドを生成するのが確実です。
!pip install torch torchvision torchaudioLightGBM
LightGBMのGPU版は、ソースからビルドします。
!git clone --recursive https://github.com/Microsoft/LightGBM%cd /content/LightGBM/!mkdir build!cmake -DUSE_GPU=1 ..!make -j$(nproc)%cd /content/LightGBM/python-package!python setup.py install --precompileXGBoostのほうは特に設定不要で、GPUランタイムに切り替えるだけで使えます。
参考:GoogleColabratory + GradientBoosting + GPU - Qiita
MeCab + mecab-ipadic-NEologd
日本語の形態素解析を、新語に強いNEologd辞書つきで使います。
インストール
# MeCab!apt install aptitude swig!aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file -y!pip install mecab-python3
# mecab-ipadic-NEologd!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -aNEologdのインストールは数分かかります。
使ってみる
辞書のパスを mecab-config から取ってTaggerに渡します。
import subprocess
import MeCab
cmd = 'echo `mecab-config --dicdir`"/mecab-ipadic-neologd"'path = ( subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) .communicate()[0] .decode("utf-8") .strip())
m = MeCab.Tagger(f"-Owakati -d {path}")
print(m.parse("私はペンギンと猫といつも仲良しです。"))-Owakati は分かち書き(単語をスペース区切りで返す)出力です。そのまま CountVectorizer などに渡せます。
Seleniumとchromedriver
Colab上でブラウザ操作をしたい場合の準備です。
# 日本語フォント(スクリーンショットの文字化け対策)!apt install fonts-ipafont-gothic
# Selenium!pip install selenium
# chromedriver!apt update!apt install chromium-chromedriver!cp /usr/lib/chromium-browser/chromedriver /usr/binColabには画面がないので、ヘッドレスモードの指定が必須です。
from selenium import webdriver
options = webdriver.ChromeOptions()options.add_argument("--headless")options.add_argument("--no-sandbox")options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(options=options)driver.get("https://example.com")print(driver.title)driver.quit()--no-sandbox と --disable-dev-shm-usage は、コンテナ環境で落ちるのを防ぐためのお決まりの指定です。
おわりに
Colabは環境構築なしにGPUが使えるのが強みですが、そのぶんセッションが切れることと、実行環境が入れ替わることを前提に組む必要があります。
データはDriveに置き、インストール手順はノートブックの先頭にまとめておくと、再開が楽になります。
