Google 공동 작업 개요 및 사용 절차 (TensorFlow 및 GPU를 사용할 수 있음)

이전부터 소문에 듣고 있던 Google Colaboratory를 사용해 보았습니다. 아직 깊이 사용하지는 않지만 매우 유용합니다. 파이썬은 쉽게 클라우드에서 실행할 수 있습니다. Jupyter Notebook의 클라우드 버전이라고 생각하십시오.
지금까지 Anaconda/Miniconda등을 사용해 로컬 환경을 만들고 있었습니다만, 그것조차 불필요하게 된다고는・・・ 문턱의 낮음에 놀라움입니다
기사 "TensorFlow를 Windows에 설치 Python 초보자라도 간단했던 건" 이나 "Windows에서 Miniconda를 사용하여 TensorFlow 환경 구축 (2018 년)" 로 쓴 내용보다 훨씬 간단합니다.
Windows 환경 비교는 기사「Windows PC로 기계 학습 환경을 만드는 방법 정리」에 썼습니다.

감상



좋은 점


  • 환경 구축하지 않아도 되는 것이 편하다! conda나 pip 명령 없이 바로 사용할 수 있는 것이 최고입니다.
  • 장치와 사람을 공유할 수 있습니다. 클라우드에 있기 때문에 공유에 강합니다

  • GPU를 사용할 수 있습니다!
  • 기사 「【Keras 입문(3)】TensorBoard로 보이게 됨」 같이 저장한 TensorBoard 로그를 그대로 볼 수 있어 편리!

  • 개선점


  • 조금 느립니다. 로컬 환경이 아니기 때문에 간단한 명령 실행에 통신이 필요하고 그 오버 헤드만큼 느리게 느낍니다
  • 미세한 환경 조정에 시간이 많이 걸립니다. TesnforFlow의 이전 버전 지정 등입니다. 셀에 pip를 사용하여 설치할 수 있지만 매번 실행하는 것이 번거롭습니다.

  • 로컬 파일의 입출력이 번거롭다. Google 드라이브의 파일을 찾아보고 쓰는 것이 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 드라이브에서 모든 폴더에 앱을 추가합니다.


    공동체를 찾아 선택합니다.



    2. Colaboratory 파일 작성



    Colaboratory 파일(Jupyter Notebook 같은 사람)을 작성합니다.


    그리고는 파일명을 적당히 바꾸어 코드를 써 실행하는 것입니다. 명령을 쓰고 Shift + Enter로 실행은 Jupyter Notebook과 동일합니다.
    x = 1 + 2
    print(x)
    print x
    



    이렇게 하면 패키지 목록을 확인할 수 있습니다.
    !pip freeze
    

    파이썬으로 내보내려면 이런 쓰기 방법입니다.
    import pkg_resources
    for package in pkg_resources.working_set:
        print(package)
    

    런타임에 관하여



    기본값은 Python2.7입니다. 따라서 "print x"라고 써도 움직입니다.
    메뉴의 「편집 -> 노트북 설정」에서 Python3계로 변경할 수 있습니다(2018/6/15시점에서 Python3.6과 같습니다).


    기사 「【초속으로 무료 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
    

    좋은 웹페이지 즐겨찾기