私の業務範囲上の理由と、元々AWS派な事もあってGoogle Colabo環境は使っていなかったのですが、業務で使う状況になったのでメモしておきます。
尚、執筆時点のGoogle ColaboratoryのOSは Ubuntu 18.04.3 LTS が使われているようです。よって後述するコードで触れていますが、シェル経由のコマンドはLinuxコマンドを叩くことを覚えておきましょう。。
Jupiterの立ち上げ方
1:Googleドライブにアクセスし適当な名前でフォルダを作成する(例:google colaboratory)
https://drive.google.com/drive/my-driv
2:「1」のフォルダを選択後「アプリで開く」 >> 「アプリを追加」を選択後、google colaboratory等を検索してアプリを追加(連携)
するとJupiterが立ち上がるので任意の名前を付けてファイルを保存。これが.ipynb形式のファイルになり、先ほど作成したGoogleドライブフォルダに格納される。
ライブラリの確認
基本的にanaconda等と同じく、初期状態で全部入り・・・となっているサービスですがpipコマンドで確認を行います。シェル経由のコマンドは先頭に!をつけましょう。
1 |
!pip list or !pip freeze |
結果、380個ほどインストールされていました↓↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 |
Package Version ----------------------------- --------------- absl-py 0.9.0 alabaster 0.7.12 albumentations 0.1.12 altair 4.1.0 argon2-cffi 20.1.0 asgiref 3.2.10 astor 0.8.1 astropy 4.0.1.post1 astunparse 1.6.3 atari-py 0.2.6 atomicwrites 1.4.0 attrs 19.3.0 audioread 2.1.8 autograd 1.3 Babel 2.8.0 backcall 0.2.0 beautifulsoup4 4.6.3 bleach 3.1.5 blis 0.4.1 bokeh 2.1.1 boto 2.49.0 boto3 1.14.37 botocore 1.17.37 Bottleneck 1.3.2 branca 0.4.1 bs4 0.0.1 CacheControl 0.12.6 cachetools 4.1.1 catalogue 1.0.0 certifi 2020.6.20 cffi 1.14.1 chainer 7.4.0 chardet 3.0.4 click 7.1.2 cloudpickle 1.3.0 cmake 3.12.0 cmdstanpy 0.4.0 colorlover 0.3.0 community 1.0.0b1 contextlib2 0.5.5 convertdate 2.2.1 coverage 3.7.1 coveralls 0.5 crcmod 1.7 cufflinks 0.17.3 cupy-cuda101 7.4.0 cvxopt 1.2.5 cvxpy 1.0.31 cycler 0.10.0 cymem 2.0.3 Cython 0.29.21 daft 0.0.4 dask 2.12.0 dataclasses 0.7 datascience 0.10.6 decorator 4.4.2 defusedxml 0.6.0 descartes 1.1.0 dill 0.3.2 distributed 1.25.3 Django 3.1 dlib 19.18.0 dm-tree 0.1.5 docopt 0.6.2 docutils 0.15.2 dopamine-rl 1.0.5 earthengine-api 0.1.229 easydict 1.9 ecos 2.0.7.post1 editdistance 0.5.3 en-core-web-sm 2.2.5 entrypoints 0.3 ephem 3.7.7.1 et-xmlfile 1.0.1 fa2 0.3.5 fancyimpute 0.4.3 fastai 1.0.61 fastdtw 0.3.4 fastprogress 0.2.5 fastrlock 0.5 fbprophet 0.6 feather-format 0.4.1 featuretools 0.4.1 filelock 3.0.12 firebase-admin 4.1.0 fix-yahoo-finance 0.0.22 Flask 1.1.2 folium 0.8.3 fsspec 0.8.0 future 0.16.0 gast 0.3.3 GDAL 2.2.2 gdown 3.6.4 gensim 3.6.0 geographiclib 1.50 geopy 1.17.0 gin-config 0.3.0 glob2 0.7 google 2.0.3 google-api-core 1.16.0 google-api-python-client 1.7.12 google-auth 1.17.2 google-auth-httplib2 0.0.4 google-auth-oauthlib 0.4.1 google-cloud-bigquery 1.21.0 google-cloud-core 1.0.3 google-cloud-datastore 1.8.0 google-cloud-firestore 1.7.0 google-cloud-language 1.2.0 google-cloud-storage 1.18.1 google-cloud-translate 1.5.0 google-colab 1.0.0 google-pasta 0.2.0 google-resumable-media 0.4.1 googleapis-common-protos 1.52.0 googledrivedownloader 0.4 graphviz 0.10.1 grpcio 1.31.0 gspread 3.0.1 gspread-dataframe 3.0.7 gym 0.17.2 h5py 2.10.0 HeapDict 1.0.1 holidays 0.9.12 holoviews 1.13.3 html5lib 1.0.1 httpimport 0.5.18 httplib2 0.17.4 httplib2shim 0.0.3 humanize 0.5.1 hyperopt 0.1.2 ideep4py 2.0.0.post3 idna 2.10 image 1.5.32 imageio 2.4.1 imagesize 1.2.0 imbalanced-learn 0.4.3 imblearn 0.0 imgaug 0.2.9 importlib-metadata 1.7.0 imutils 0.5.3 inflect 2.1.0 iniconfig 1.0.1 intel-openmp 2020.0.133 intervaltree 2.1.0 ipykernel 4.10.1 ipython 5.5.0 ipython-genutils 0.2.0 ipython-sql 0.3.9 ipywidgets 7.5.1 itsdangerous 1.1.0 jax 0.1.75 jaxlib 0.1.52 jdcal 1.4.1 jedi 0.17.2 jieba 0.42.1 Jinja2 2.11.2 jmespath 0.10.0 joblib 0.16.0 jpeg4py 0.1.4 jsonschema 2.6.0 jupyter 1.0.0 jupyter-client 5.3.5 jupyter-console 5.2.0 jupyter-core 4.6.3 kaggle 1.5.6 kapre 0.1.3.1 Keras 2.4.3 Keras-Preprocessing 1.1.2 keras-vis 0.4.1 kiwisolver 1.2.0 knnimpute 0.1.0 librosa 0.6.3 lightgbm 2.2.3 llvmlite 0.31.0 lmdb 0.98 lucid 0.3.8 LunarCalendar 0.0.9 lxml 4.2.6 Markdown 3.2.2 MarkupSafe 1.1.1 matplotlib 3.2.2 matplotlib-venn 0.11.5 missingno 0.4.2 mistune 0.8.4 mizani 0.6.0 mkl 2019.0 mlxtend 0.14.0 more-itertools 8.4.0 moviepy 0.2.3.5 mpmath 1.1.0 msgpack 1.0.0 multiprocess 0.70.10 multitasking 0.0.9 murmurhash 1.0.2 music21 5.5.0 natsort 5.5.0 nbconvert 5.6.1 nbformat 5.0.7 networkx 2.4 nibabel 3.0.2 nltk 3.2.5 notebook 5.3.1 np-utils 0.5.12.1 numba 0.48.0 numexpr 2.7.1 numpy 1.18.5 nvidia-ml-py3 7.352.0 oauth2client 4.1.3 oauthlib 3.1.0 okgrade 0.4.3 opencv-contrib-python 4.1.2.30 opencv-python 4.1.2.30 openpyxl 2.5.9 opt-einsum 3.3.0 osqp 0.6.1 packaging 20.4 palettable 3.3.0 pandas 1.0.5 pandas-datareader 0.8.1 pandas-gbq 0.11.0 pandas-profiling 1.4.1 pandocfilters 1.4.2 panel 0.9.7 param 1.9.3 parso 0.7.1 pathlib 1.0.1 patsy 0.5.1 pexpect 4.8.0 pickleshare 0.7.5 Pillow 7.0.0 pip 19.3.1 pip-tools 4.5.1 plac 1.1.3 plotly 4.4.1 plotnine 0.6.0 pluggy 0.7.1 portpicker 1.3.1 prefetch-generator 1.0.1 preshed 3.0.2 prettytable 0.7.2 progressbar2 3.38.0 prometheus-client 0.8.0 promise 2.3 prompt-toolkit 1.0.18 protobuf 3.12.4 psutil 5.4.8 psycopg2 2.7.6.1 ptyprocess 0.6.0 py 1.9.0 pyarrow 0.14.1 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycocotools 2.0.1 pycparser 2.20 pyct 0.4.6 pydata-google-auth 1.1.0 pydot 1.3.0 pydot-ng 2.0.0 pydotplus 2.0.2 PyDrive 1.3.1 pyemd 0.5.1 pyglet 1.5.0 Pygments 2.1.3 pygobject 3.26.1 pymc3 3.7 PyMeeus 0.3.7 pymongo 3.11.0 pymystem3 0.2.0 PyOpenGL 3.1.5 pyparsing 2.4.7 pyrsistent 0.16.0 pysndfile 1.3.8 PySocks 1.7.1 pystan 2.19.1.1 pytest 3.6.4 python-apt 1.6.5+ubuntu0.3 python-chess 0.23.11 python-dateutil 2.8.1 python-louvain 0.14 python-slugify 4.0.1 python-utils 2.4.0 pytz 2018.9 pyviz-comms 0.7.6 PyWavelets 1.1.1 PyYAML 3.13 pyzmq 19.0.2 qtconsole 4.7.5 QtPy 1.9.0 regex 2019.12.20 requests 2.23.0 requests-oauthlib 1.3.0 resampy 0.2.2 retrying 1.3.3 rpy2 3.2.7 rsa 4.6 s3fs 0.4.2 s3transfer 0.3.3 scikit-image 0.16.2 scikit-learn 0.22.2.post1 scipy 1.4.1 screen-resolution-extra 0.0.0 scs 2.1.2 seaborn 0.10.1 Send2Trash 1.5.0 setuptools 49.2.0 setuptools-git 1.2 Shapely 1.7.0 simplegeneric 0.8.1 six 1.15.0 sklearn 0.0 sklearn-pandas 1.8.0 smart-open 2.1.0 snowballstemmer 2.0.0 sortedcontainers 2.2.2 spacy 2.2.4 Sphinx 1.8.5 sphinxcontrib-serializinghtml 1.1.4 sphinxcontrib-websupport 1.2.3 SQLAlchemy 1.3.18 sqlparse 0.3.1 srsly 1.0.2 statsmodels 0.10.2 sympy 1.1.1 tables 3.4.4 tabulate 0.8.7 tblib 1.7.0 tensorboard 2.3.0 tensorboard-plugin-wit 1.7.0 tensorboardcolab 0.0.22 tensorflow 2.3.0 tensorflow-addons 0.8.3 tensorflow-datasets 2.1.0 tensorflow-estimator 2.3.0 tensorflow-gcs-config 2.3.0 tensorflow-hub 0.8.0 tensorflow-metadata 0.22.2 tensorflow-privacy 0.2.2 tensorflow-probability 0.11.0 termcolor 1.1.0 terminado 0.8.3 testpath 0.4.4 text-unidecode 1.3 textblob 0.15.3 textgenrnn 1.4.1 Theano 1.0.5 thinc 7.4.0 tifffile 2020.7.24 toml 0.10.1 toolz 0.10.0 torch 1.6.0+cu101 torchsummary 1.5.1 torchtext 0.3.1 torchvision 0.7.0+cu101 tornado 5.1.1 tqdm 4.41.1 traitlets 4.3.3 tweepy 3.6.0 typeguard 2.7.1 typing-extensions 3.7.4.2 tzlocal 1.5.1 umap-learn 0.4.6 uritemplate 3.0.1 urllib3 1.24.3 vega-datasets 0.8.0 wasabi 0.7.1 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 1.0.1 wheel 0.34.2 widgetsnbextension 3.5.1 wordcloud 1.5.0 wrapt 1.12.1 xarray 0.15.1 xgboost 0.90 xkit 0.0.0 xlrd 1.1.0 xlwt 1.3.0 yellowbrick 0.9.1 zict 2.0.0 zipp 3.1.0 |
ライブラリの追加インストール
普通にpipすればインストール可能です。コレスポンデンス分析を行う為のmcaライブラリをインストールしてみます。
1 |
!pip install mca |
アップグレードや指定バージョンへの切り替えも通常のpipコマンドと同じです。
1 2 3 4 5 6 7 8 |
#versionを確認 pip show pandas #versionを指定して再インストール !pip install pandas==1.00 #最新版にアップグレード !pip install --pandas |
ライブラリをインストール後はランライムを再起動します。
matplotlibの日本化
ローカル環境ではフォントを指定箇所に配置後、システムファイルを書き換えれば良いのですが、 Google Colaboratory上でも同じイメージで作業で対応できます。
すでに日本語対応しているjapanize-matplotlibを使う手もありますが、実行プログラムによってエラーが出た記憶があるので(私だけかも・・・)・・・・なるべく純正品を使用する派な方は以下を実行すると良いでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#iPAフォントのインストール !apt-get -y install fonts-ipafont-gothic #キャッシュファイルの場所の確認(環境で異なるので毎回確認してください) import matplotlib matplotlib.get_cachedir() ##lsコマンドで表示(このファイルを削除すればよい) ##fontlist-v310.json ##tex.cache #キャッシュファイルをフォルダごと削除 !rm -r /root/.cache/matplotlib/ |
その後、上部メニュー >> ランタイム >> 再起動して全てのセルを実行を行えば、無事日本語表示がされているはずです。
フォント設定は完了しているものの、このままでは任意のフォントを読みに行ってくれないので、以下の様に fontfamilyを宣言しておく。
1 2 3 4 5 6 7 8 9 10 11 |
import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'IPAPGothic' #例 from google.colab import drive drive.mount('/content/drive') import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'IPAPGothic' |
ファイルの読み込み(Googleドライブ上のファイルを読みこむ)
宣言
まず、header付近にGoogleドライブを使う宣言を行う。
1 2 |
from google.colab import drive drive.mount('/content/drive' |
これを実行するとOAuth認証が走り、URLが表れるのでクリック(遷移先はGoogleのログイン画面)、画面の指示に従いアクセスを許可する。
するとauthorization code(AWSで言う一時的なシークレットキーのようなもの)が発行されるのでコピー、Google Colabに戻り「Enter your authorization code:」と書かれた部分に入力。
これでGoogleドライブがマウントされる。
読み込み
マウントが完了したら読み込みテストを行う。pandasで読み込むことが多いと思われる為、pandasでの操作を以下に記載する。
Google Colab上でもpandasが利用でき、構文も同じであるが、問題なのはGoogleドライブのパスである。
結論から言うと以下の様にすればよい。
1 2 3 4 5 |
#GoogleドライブのルートにCSVが存在する場合 df = pd.read_csv('/content/drive/My Drive/titanic.csv') #Googleドライブの第二階層にCSVが存在する場合 df = pd.read_csv('/content/drive/My Drive/●●●●●/titanic.csv') |
※ /content/drive/My Drive/ が固定パスとなるのでその後のpathを変えればよい。尚、Googleドライブで該当ファイルを選択してもS3の様にファイルまでのパスは表示してくれないようだ(地味に不便である・・)
表示してみましょう。
無事に読み込まれていますね!
大容量データの場合はGoogleドライブのに上げるのに以上な時間が掛かるため、予めSQL等で横持ちのデータにしたものを、ZIP化してアップロード、クラウド側で解凍してあげると良いみたい。
GPUの使用
上部メニュー >> ランタイムのタイプの変更から
・None
・GPU
・TPU
の3つが選択できる。TPUはまだ試していませんがGoogle独自のものらしいです。
画像解析や複雑なモデルを使用する際は、演算処理が得意なGPUを使用すると良いでしょう。
価格
時間制限がありますが、無料枠がありどなたでも利用できます。
Pro版でも9.99ドルという破格の安さです。
参考にしたサイト
・Google ドライブをローカルにマウントする|colab.research.google.com
感想
あまり触れられてないのですが(当たり前だからかも)グーグルドライブに.ipyndが保存されるので、バージョン管理が自動的に行われており、万が一破損した場合は過去バージョンに戻れたりします。
subversionやローカル側で_yyyymmddみたいな感じで原始的にバックアップを取る必要がないので、実は嬉しいポイントでした。
これから使い込んでいく予定なので、また記事にしたいと思います。
よいcolabライフを!