LoginSignup
70
86

More than 1 year has passed since last update.

Google Colaboratory概要と使用手順(TensorFlowもGPUも使える)

Last updated at Posted at 2018-06-16

以前から噂に聞いていたGoogle Colaboratoryを使ってみました。まだ深くは使ってませんが、非常に便利です。Pythonが手軽にクラウド上で実行できます。Jupyter Notebookのクラウド版だと思ってください。
今までAnaconda/Minicondaなどを使ってローカル環境を作っていましたが、それすら不要になるとは・・・敷居の低さに驚きです:scream:
記事「TensorFlowをWindowsにインストール Python初心者でも簡単だった件」「WindowsでMinicondaを使ってTensorFlow環境構築(2018年)」で書いた内容よりも遥かにお手軽です。
Windowsでの環境比較は、記事「Windows PCで機械学習環境を作る方法まとめ」に書きました。

感想

良い点

  • 環境構築しなくていいのが楽!condaやpipコマンドしないですぐに使えるのが最高です。
  • デバイス・人をまたいだ共有ができる。クラウド上にあるので共有に強いです
  • GPUが使える!:sparkles:
  • 記事「【Keras入門(3)】TensorBoardで見える化」のように保存したTensorBoardログをそのまま見ることができ、便利!

改善点

  • 少し遅い。ローカル環境ではないので、単純なコマンド実行に通信が必要でそのオーバーヘッドの分だけ遅く感じます
  • 細かい環境調整に手間がかかる。TesnforFlowの古いバージョン指定などです。セル上でpipを使ってインストールもできますが、毎回実行するのが面倒です。
  • ローカルファイルの入出力が面倒。Google Drive上のファイルを参照・書き込みするのが、Jupyter Notebookに比べると手間がかかります。 Google Driveから容易にファイルアクセスできるようになっていました!詳しくは公式参照(2019/4/10追加)
# こうするだけで、マウントできちゃう
from google.colab import drive
drive.mount('/content/gdrive')

# で、ファイル書き込み
with open('/content/gdrive/My Drive/foo.txt', 'w') as f:
    f.write('Hello Google Drive!')
!cat /content/gdrive/My\ Drive/foo.txt

手順

1. Google Driveセットアップ

Google Driveで任意のフォルダに対してアプリを追加します。
10.AddAppToGDrive01.JPG

Colaboratoryを探して選択します。
10.AddAppToGDrive02.JPG
10.AddAppToGDrive03.JPG

2. Colaboratoryファイル作成

Colaboratoryファイル(Jupyter Notebookっぽいやつ)を作成します。
20.CreateColabFile01.JPG

あとはファイル名を適当に変えてコードを書いて実行するだけです。コマンド書いてShift + Enter で実行はJupyter Notebookと同じです。

x = 1 + 2
print(x)
print x

20.CreateColabFile02.JPG

こうすればパッケージ一覧が確認できます。

!pip freeze

Pythonで出すにはこんな書き方です。

import pkg_resources
for package in pkg_resources.working_set:
    print(package)

ランタイムに関して

デフォルトはPython2.7です。そのため"print x"と書いても動きます。
メニューの「編集 -> ノートブックの設定」でPython3系に変更できます(2018/6/15時点でPython3.6のようです)。
30.OptionColab01.JPG

記事「【秒速で無料GPUを使う】深層学習実践Tips on Colaboratory」に詳しい内容があるので、細かく見たい場合は、非常に参考になります。

ファイル入出力

Google Driveから

下記のコードを実行すると認証ページへのリンクが出力されるので、認証を許可して、取得したAuthorization Codeを入力します。

from google.colab import drive
drive.mount('/content/gdrive')
# ファイル書き込み
with open('/content/gdrive/My Drive/foo.txt', 'w') as f:
    f.write('Hello Google Drive!')
!cat /content/gdrive/My\ Drive/foo.txt

ローカルPCから

# show upload dialog
from google.colab import files
uploaded = files.upload()

上記コードで、ローカルファイルのアップロードをします。
アップロードされたファイル名を次のコードに埋め込んで読み込みます。

with open("アップロードされたファイル名") as f:
    print(f.read())

おまけ: 便利機能

スクラッチコードセル

  • メニュー: 挿入 -> スクラッチコードセル
  • 使い方: ちょっとしたコードを試すのに使用。コードは保存されない。

コードスニペット

  • メニュー: 挿入 -> コードスニペット
  • 使い方: Webカメラ起動などのコードスニペットを選んで挿入可能

フォーム項目の追加

  • メニュー: 挿入 -> フォーム項目の追加
  • 使い方: 入力できる項目の追加。数値型、日付型などデータ型も指定可能。コードを隠すことも可能。

おまけ:2019/4/12時点でのライブラリ一覧

!pip freeze
absl-py==0.7.1
alabaster==0.7.12
albumentations==0.1.12
altair==2.4.1
astor==0.7.1
astropy==3.0.5
atari-py==0.1.7
atomicwrites==1.3.0
attrs==19.1.0
audioread==2.1.6
autograd==1.2
Babel==2.6.0
backcall==0.1.0
backports.tempfile==1.0
backports.weakref==1.0.post1
beautifulsoup4==4.6.3
bleach==3.1.0
bokeh==1.0.4
boto==2.49.0
boto3==1.9.130
botocore==1.12.130
Bottleneck==1.2.1
branca==0.3.1
bs4==0.0.1
bz2file==0.98
cachetools==3.1.0
certifi==2019.3.9
cffi==1.12.2
chainer==5.0.0
chardet==3.0.4
Click==7.0
cloudpickle==0.6.1
cmake==3.12.0
colorlover==0.3.0
community==1.0.0b1
contextlib2==0.5.5
convertdate==2.1.3
coverage==3.7.1
coveralls==0.5
crcmod==1.7
cufflinks==0.14.6
cupy-cuda100==5.2.0
cvxopt==1.2.3
cvxpy==1.0.15
cycler==0.10.0
cymem==2.0.2
Cython==0.29.6
cytoolz==0.9.0.1
daft==0.0.4
dask==0.20.2
dataclasses==0.6
datascience==0.10.6
decorator==4.4.0
defusedxml==0.5.0
dill==0.2.9
distributed==1.25.3
Django==2.2
dlib==19.16.0
dm-sonnet==1.23
docopt==0.6.2
docutils==0.14
dopamine-rl==1.0.5
easydict==1.9
ecos==2.0.7.post1
editdistance==0.5.3
en-core-web-sm==2.0.0
entrypoints==0.3
enum34==1.1.6
ephem==3.7.6.0
et-xmlfile==1.0.1
fa2==0.3.5
fancyimpute==0.4.2
fastai==1.0.51
fastcache==1.0.2
fastdtw==0.3.2
fastprogress==0.1.21
fastrlock==0.4
fbprophet==0.4.post2
featuretools==0.4.1
filelock==3.0.10
fix-yahoo-finance==0.0.22
Flask==1.0.2
folium==0.8.3
future==0.16.0
gast==0.2.2
GDAL==2.2.2
gdown==3.6.4
gensim==3.6.0
geographiclib==1.49
geopy==1.17.0
gevent==1.4.0
gin-config==0.1.4
glob2==0.6
google==2.0.2
google-api-core==1.9.0
google-api-python-client==1.6.7
google-auth==1.4.2
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.3.0
google-cloud-bigquery==1.8.1
google-cloud-core==0.29.1
google-cloud-language==1.0.2
google-cloud-storage==1.13.2
google-cloud-translate==1.3.3
google-colab==1.0.0
google-resumable-media==0.3.2
googleapis-common-protos==1.5.9
googledrivedownloader==0.3
graph-nets==1.0.3
graphviz==0.10.1
greenlet==0.4.15
grpcio==1.15.0
gspread==3.0.1
gspread-dataframe==3.0.2
gunicorn==19.9.0
gym==0.10.11
h5py==2.8.0
HeapDict==1.0.0
holidays==0.9.10
html5lib==1.0.1
httpimport==0.5.16
httplib2==0.11.3
humanize==0.5.1
hyperopt==0.1.2
ideep4py==2.0.0.post3
idna==2.6
image==1.5.27
imageio==2.4.1
imagesize==1.1.0
imbalanced-learn==0.4.3
imblearn==0.0
imgaug==0.2.8
imutils==0.5.2
inflect==2.1.0
intel-openmp==2019.0
intervaltree==2.1.0
ipykernel==4.6.1
ipython==5.5.0
ipython-genutils==0.2.0
ipython-sql==0.3.9
ipywidgets==7.4.2
itsdangerous==1.1.0
jdcal==1.4
jedi==0.13.3
jieba==0.39
Jinja2==2.10.1
jmespath==0.9.4
joblib==0.12.5
jpeg4py==0.1.4
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.2.4
jupyter-console==6.0.0
jupyter-core==4.4.0
kaggle==1.5.3
kapre==0.1.3.1
Keras==2.2.4
Keras-Applications==1.0.7
Keras-Preprocessing==1.0.9
keras-vis==0.4.1
kiwisolver==1.0.1
knnimpute==0.1.0
librosa==0.6.3
lightgbm==2.2.3
llvmlite==0.28.0
lmdb==0.94
lucid==0.3.8
lunardate==0.2.0
lxml==4.2.6
magenta==0.3.19
Markdown==3.1
MarkupSafe==1.1.1
matplotlib==3.0.3
matplotlib-venn==0.11.5
mesh-tensorflow==0.0.5
mido==1.2.6
mir-eval==0.5
missingno==0.4.1
mistune==0.8.4
mkl==2019.0
mlxtend==0.14.0
mock==2.0.0
more-itertools==7.0.0
moviepy==0.2.3.5
mpi4py==3.0.1
mpmath==1.1.0
msgpack==0.5.6
msgpack-numpy==0.4.3.2
multiprocess==0.70.7
multitasking==0.0.7
murmurhash==1.0.2
music21==5.5.0
natsort==5.5.0
nbconvert==5.4.1
nbformat==4.4.0
networkx==2.2
nibabel==2.3.3
nltk==3.2.5
nose==1.3.7
notebook==5.2.2
np-utils==0.5.10.0
numba==0.40.1
numexpr==2.6.9
numpy==1.14.6
nvidia-ml-py3==7.352.0
oauth2client==4.1.3
oauthlib==3.0.1
okgrade==0.4.3
olefile==0.46
opencv-contrib-python==3.4.3.18
opencv-python==3.4.5.20
openpyxl==2.5.9
osqp==0.5.0
packaging==19.0
pandas==0.22.0
pandas-datareader==0.7.0
pandas-gbq==0.4.1
pandas-profiling==1.4.1
pandocfilters==1.4.2
parso==0.4.0
pathlib==1.0.1
patsy==0.5.1
pbr==5.1.3
pexpect==4.7.0
pickleshare==0.7.5
Pillow==4.1.1
pip-tools==3.4.0
plac==0.9.6
plotly==3.6.1
pluggy==0.7.1
portpicker==1.2.0
prefetch-generator==1.0.1
preshed==2.0.1
pretty-midi==0.2.8
prettytable==0.7.2
progressbar2==3.38.0
prometheus-client==0.6.0
promise==2.2.1
prompt-toolkit==1.0.15
protobuf==3.7.1
psutil==5.4.8
psycopg2==2.7.6.1
ptyprocess==0.6.0
py==1.8.0
pyasn1==0.4.5
pyasn1-modules==0.2.4
pycocotools==2.0.0
pycparser==2.19
pydot==1.3.0
pydot-ng==2.0.0
pydotplus==2.0.2
pyemd==0.5.1
pyglet==1.3.2
Pygments==2.1.3
pygobject==3.26.1
pymc3==3.6
pymongo==3.7.2
pymystem3==0.2.0
PyOpenGL==3.1.0
pyparsing==2.4.0
pyrsistent==0.14.11
pysndfile==1.3.2
PySocks==1.6.8
pystan==2.19.0.0
pytest==3.6.4
python-apt==1.6.3+ubuntu1
python-chess==0.23.11
python-dateutil==2.5.3
python-louvain==0.13
python-rtmidi==1.2.1
python-slugify==3.0.2
python-utils==2.3.0
pytz==2018.9
PyWavelets==1.0.3
PyYAML==3.13
pyzmq==17.0.0
qtconsole==4.4.3
regex==2018.1.10
requests==2.18.4
requests-oauthlib==1.2.0
resampy==0.2.1
retrying==1.3.3
rpy2==2.9.5
rsa==4.0
s3fs==0.2.0
s3transfer==0.2.0
scikit-image==0.13.1
scikit-learn==0.20.3
scipy==1.1.0
screen-resolution-extra==0.0.0
scs==2.1.0
seaborn==0.7.1
Send2Trash==1.5.0
setuptools-git==1.2
Shapely==1.6.4.post2
simplegeneric==0.8.1
six==1.11.0
sklearn==0.0
smart-open==1.8.1
snowballstemmer==1.2.1
sortedcontainers==2.1.0
spacy==2.0.18
Sphinx==1.8.5
sphinxcontrib-websupport==1.1.0
SQLAlchemy==1.3.2
sqlparse==0.3.0
stable-baselines==2.2.1
statsmodels==0.8.0
sympy==1.1.1
tables==3.4.4
tabulate==0.8.3
tblib==1.3.2
tensor2tensor==1.11.0
tensorboard==1.13.1
tensorboardcolab==0.0.22
tensorflow==1.13.1
tensorflow-estimator==1.13.0
tensorflow-hub==0.4.0
tensorflow-metadata==0.13.0
tensorflow-probability==0.6.0
termcolor==1.1.0
terminado==0.8.2
testpath==0.4.2
text-unidecode==1.2
textblob==0.15.3
textgenrnn==1.4.1
tfds-nightly==1.0.2.dev201904090105
tflearn==0.3.2
Theano==1.0.4
thinc==6.12.1
toolz==0.9.0
torch==1.0.1.post2
torchsummary==1.5.1
torchtext==0.3.1
torchvision==0.2.2.post3
tornado==4.5.3
tqdm==4.28.1
traitlets==4.3.2
tweepy==3.6.0
typing==3.6.6
tzlocal==1.5.1
ujson==1.35
umap-learn==0.3.8
uritemplate==3.0.0
urllib3==1.22
vega-datasets==0.7.0
wcwidth==0.1.7
webencodings==0.5.1
Werkzeug==0.15.2
widgetsnbextension==3.4.2
wordcloud==1.5.0
wrapt==1.10.11
xarray==0.11.3
xgboost==0.82
xkit==0.0.0
xlrd==1.1.0
xlwt==1.3.0
yellowbrick==0.9.1
zict==0.1.4
zmq==0.0.0
70
86
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
86