skip to content
barorin&

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はブラウザを放置すると切断されます。学習を回している間に落とされないための対策です。

  1. ブラウザの拡張機能で自動更新系のアドオンを入れておく
  2. ノートブックのメニューから ランタイム > ランタイムのタイプを変更 を開き、「このノートブックを保存する際にコードセルの出力を除外する」にチェックを入れる
  3. 最初のリロード時だけ手動で再読み込みする

2は出力が溜まってノートブックが重くなるのを防ぐためです。長時間の学習ログを出しっぱなしにすると、保存のたびに重くなって結局切れます。

GPUを使う

まず ランタイム > ランタイムのタイプを変更 でハードウェアアクセラレータをGPUにします。ここを切り替えないと、以下のインストールをしてもGPUは使われません。

PyTorch

公式の Get Started で自分の環境に合うコマンドを生成するのが確実です。

Terminal window
!pip install torch torchvision torchaudio

LightGBM

LightGBMのGPU版は、ソースからビルドします。

Terminal window
!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 --precompile

XGBoostのほうは特に設定不要で、GPUランタイムに切り替えるだけで使えます。

参考:GoogleColabratory + GradientBoosting + GPU - Qiita

MeCab + mecab-ipadic-NEologd

日本語の形態素解析を、新語に強いNEologd辞書つきで使います。

インストール

Terminal window
# 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 -a

NEologdのインストールは数分かかります。

使ってみる

辞書のパスを 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上でブラウザ操作をしたい場合の準備です。

Terminal window
# 日本語フォント(スクリーンショットの文字化け対策)
!apt install fonts-ipafont-gothic
# Selenium
!pip install selenium
# chromedriver
!apt update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

Colabには画面がないので、ヘッドレスモードの指定が必須です。

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に置き、インストール手順はノートブックの先頭にまとめておくと、再開が楽になります。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。