Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

以前から噂に聞いていた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())

おまけ: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
FukuharaYohei
気の向いたままにいろいろと書きます。 仕事はSAP関連で、HANA、Fiori、SAPUI5、BusinessObjectsなどいろいろやっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away