ITエンジニアのブログ

IT企業でエンジニアやってる人間の日常について

機械学習用のGPU環境を用意するのが難しい...

良いGPU環境をいろいろ探しています。

動かしたいもの

趣味で書いているリバーシAIプログラムがあります。

github.com

このAIに学習をさせようとしているのですが、これに手こずっています。

まだ最善手を見つけられていませんが、色々調べましたので、それらを列挙していきます。

選択肢

何個か選択肢があります。

GPUを使わない。

GPUを使わずにCPUで全部済ませてしまうという方法もあります。長所は動作環境が限定されず、私が使っているさくらVPSでも実行することができます。

短所は、当然ですが時間がかかりすぎてしまうことです。リバーシのAIを10万回学習させるだけでも、多少複雑なモデルを使えば1日半くらいかかってしまいました。数百万回の学習をさせたい場合は現実的ではありません。

Colaboratory を使う。

別の記事で Colaboratory を挙げました。Jupyter環境が使えます。Googleアカウントさえあれば無料で使えますし、GPUも使用可能ですから、簡単な機械学習にはうってつけだと思います。

しかし、ファイルを分割している場合は読み込みをさせるのが大変です。ドライブのマウントとシンボリックリンクを用いて無理やり複数ファイルを読み込ませました。

また、ランタイムがタイムアウトしたときにおかしな動作になります。学習中にタイムアウト → 勝手に再実行 → ブラウザごとフリーズが何回か起こりました。

クラウドコンピューティングを使う。

AWS の EC2 や GCP の GCE の選択肢も挙がると思います。時間課金なので、少々使う分ならPCを買ったりするよりも安く済む可能性が高いです。また、家に物が増えないのも長所になります。

ただ、短時間で割安なのと同時に、使用時間が長いと大金を請求される可能性もあります。インスタンスを止め忘れたり、不正アクセスされた場合のリスクが大きいです。個人の趣味でやるには敷居が高いかもしれません。

機械学習用PCを買う。

機械学習ができるPCを一度買ってしまえば、あとは電気代しかかかりません。計算資源の利用に制限がなく、自宅サーバーとして勉強用に使用することができます。

しかし、Webで調べたところ、機械学習ができるPCは結構高く、最初から機械学習ができるようにセットアップされた i7 (6core 12 thread), 64GB memory, RTX 2080 graphics でも、50万円以上かかるようです。(私のクレジットカードでは上限超えてしまいます。)自分でOSやドライバを設定すればもう少し安く(25万円程度)になるようですが、ドライバを設定するのは難しいようで、失敗すると画面がつかなくなったりする例もあるらしく、かなりリスクのある買い物になるでしょう。

最後に

未だ選択できていませんが、色々な選択肢はあります。 悩んでる間にもっと良い選択肢が出ることを期待します。

【Colaboratory】Googleアカウント1つでPythonを始める

Googleアカウント1つでPythonの実行環境を用意できる Colaboratory を最近 (2018 ~ 2019) 使っています。

環境構築をする必要がないことに加え、手元のCPU資源を消費せずに使えます。

GPUを使えるようにもなっているので、機械学習のプログラムも動作させることができます。

始め方

まず Google Drive を始めます。Google DriveGoogle 検索するか、Google Chrome のメニュー欄にドライブとあるので起動し、 Google Drive を始めるというボタンがあるので押下すると始まります。

f:id:tfull:20190323154004p:plain
Colaboratoryの起動

ドライブ内で[右クリック] > [その他] > [アプリを追加] で Colaboratory と検索し、入手をクリックすると、[右クリック] > [その他] の欄で Colaboratory が選択できます。

f:id:tfull:20190323160106p:plain
実行例

Python コードを書いて Shift + Enter を押下することで、コードが実行されます。

メモリ約13GBで動作できるので、比較的大きなデータも読み込めます。

Pythonでfalconを用いて簡易APIサーバーを作る。

Python 3.6 です。

falcon を使った簡易APIサーバーです。自然言語処理のブラウザインターフェースを作ろうとして必要になったので、メモとして残します。

構成要素

実装

falcon をインストールします。

pip install falcon

コードは以下。

import falcon
import json
import sys
from wsgiref import simple_server

class Number(object):
    def on_get(self, req, resp):
        result = req.params
        values = [int(v) for v in result["values"].split("_")]
        resp.body = json.dumps({ "answer": sum(values) })

if __name__ == '__main__':
    app = falcon.API()
    app.add_route("/", Number())
    httpd = simple_server.make_server("127.0.0.1", int(sys.argv[1]), app)
    httpd.serve_forever()

req でディクショナリを受け取るので、json文字列を返します。

この例だと足し算を行うプログラムです。

実行

以下でサーバーを起動します。例として port 13337 で起動します。

python server.py 13337

そしてブラウザで

localhost:13337?values=1_2_3_4_5

と入力すると、足し算が行われて、ブラウザに

{ "answer": 15 }

と表示されます。

エラー処理をきちんと追加すれば使用できそうです。

MacBookを購入した話。

f:id:tfull:20190321215723j:plain
MacBook (2017)

MacBookを購入して1ヶ月が経過したので、使い心地について述べたいと思います。

なぜ購入したか。

2年前に妹にお下がりとしてあげた MacBook Air (2012) が壊れたため、使い続けていた MacBook Air 13 inch (2014) をお下がりとしてあげることになりました。
Surface Pro 4iMac (2015) はあるものの、macOS 入りのノートPCが手元から無くなってしまったため、MacのノートPCが欲しいという事で購入に至りました。

なぜ MacBook か。

選択肢としては MacBook, MacBook Air, MacBook Pro があります。最近アップデートされたばかりの MacBook Air が魅力的だったので、それにしようかと思っていました。しかし、重たい処理などはデスクトップやレンタルサーバーで行えば良いことを考えると、軽さに振り切った MacBook の方が良いかもしれないということをまず考えました。加えて、MacBook Air はプロセッサが i5 しか選べないことについて、今まで i7 を選び続けてきた自分にとっては躊躇するところがあったので、今回の選択に至りました。あまりしませんが、持ち歩きも便利です。

スペック

  • モデル: MacBook (Retina, 12-inch 2017)
  • プロセッサ: 1.4 GHz Intel Core i7
  • メモリ: 16 GB 1867 MHz
  • グラフィックス: Intel HD Graphics 615 1536 MB
  • ストレージ: 256 GB SSD

用途

基本的に、簡単なプログラミングやネットサーフィンを行います。また、レンタルサーバーの操作(プログラミングなど)も行います。昔にAppleで販売されていたアルミのPCスタンドに乗せることで、ベッドで横になった状態でも操作できるのが、私がノートPCを使う際の大きなメリットになっています。

雑感

業務で MacBook Pro を使っていたため慣れていたのもあり、キーボードは気に入っています。トラックパッドは十分な大きさがあって使いやすいです。

最近のApple製品のゴールドモデルは、少し橙色から桃色に近いような印象を受けます。最初に MacBook Air を店頭で見たときはピンクかと思いました。私はどちらかというと、昔の黄色に近いゴールドが好きだったので、戻ってほしい気持ちがあります。

ルイ・ヴィトン(Louis Vuitton)の長財布を買った。

f:id:tfull:20190221200925j:plain
Louis Vuitton 長財布1

1ヶ月ほど前(2019/02)の話ですが、ルイ・ヴィトン (Louis Vuitton) の長財布を買いました。

前に買ったのが PRARE の長財布で、使用期間は7年間くらいです。

同じ財布を長く使っていると金回りが良くならないということを聞いたので、思い切って高級な財布を買おうということで、事前にネットで調べて、表参道のルイ・ヴィトンで買ってきました。70,200円でした。

中は銀で刻印が彫られています。

使っていて、最初は硬いなと思っていたのですが、徐々に馴染んできて快適に使えています。ちょっと中の刻印が剥がれないのか心配ですが...

f:id:tfull:20190221201012j:plain
Louis Vuitton 長財布2

この財布を買ってから直ぐに一つ良い事が起こりまして、購入翌日に会社から臨時で賞与を貰え、財布の購入金額以上の額が戻ってきました。

気持ちを入れ替えたいときにこういう買い物をするのも良いですね。

Javaでタイピングゲームを作った話(7年前)

7年前のプログラミング初心者だったときに作った、タイピングゲームについて振り返りながら紹介します。

GitHubにコードを公開しています。
↓↓↓
github.com

Javaで実装されたものです。swingなど、最初から使えるライブラリで完結しています。

ゲームは2種類あって、文章をタイピングするものと、単語をタイピングするものがあります。

次の画面が文章版。

f:id:tfull:20190321174309p:plain
タイピングゲーム画面(文章版)

文章タイピングは、上側に文章が、下側に次以降の文字列が表示されます。打ち終わった文字については色が変わるようになっています。

次の画面が単語版。

f:id:tfull:20190321175916p:plain
タイピングゲーム画面(単語版)

言語は英語のみですが、そのかわりオリジナルの文章を読み込ませてゲームを行うことができます。

どちらも、300行程度のJavaコードで実装されています。

VOCALOID音楽動画を全部一人で作った話(8曲目)

VOCALOID楽曲を作った話 8曲目です。

大学生になって東京に来て以降、何かとうまくいかないことが多かったのですが、そろそろ気持ちを入れ替えていきたいなと思いました。頑張るための曲です。

↓ こちら ↓
www.youtube.com

イラストは、2点透視法でパース定規を使いながら描きましたが、最初は慣れなくて頭に情景を思い浮かべるのが難しかったです。