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

DeepPipe(ElixirによるDeep Learningライブラリ)再始動

再始動

以前、Elixirで作った拙作、DeepPipeを作り直しています。DeepPipe2といいます。前回は自分がDeep Learningを理解することが目的でした。岡谷先生の本、斎藤康毅先生の本を参考にし、Elixirで書いたものです。斎藤先生の本ではPythonで書かれていました。Pythonは副作用を許容しており高級なC言語という感じです。一方、Elixirはフレンドリーとはいえ関数型言語でありイミュターブルです。Elixirによる前例はほぼ無く、イミュータブル制約のなかでいかにして計算を表現するのかということに四苦八苦していたように覚えています。試行錯誤の連続でした。
今回は全体像が見えています。Elixirで書きにくいところは、やはり自作のcuMatrixというライブラリに委ねることにより簡潔明瞭なコードを目指しています。

ロードマップ

第一段階 まずは単純な重み行列とバイアス、活性化関数だけのものをできるだけシンプルに記述し、動作することを確認します。また、GPUを活用したcuMatrixにより実用速度が出せるのかどうか?確認します。

第二段階 CNNの機能を追加します。NvidiaのGPUライプラリのcuDNNによらずに畳み込み、プーリングをCUDAで記述し、cuMatrixに取り入れようと考えています。

第三段階 RNN LSTMの仕組みをCUDAで記述し、cuMatrixに取り込み実用速度が出せるかを模索します。

下支え

計算速度を稼ぐのにGPUによるCUDA、cuBLASを活用します。速度を要する部分、イミュータブルでは記述しにくいところをCUDAで記述、cuMatrixでカバーする予定です。

達成したこと

Linux系のOSでCUDAをインストール。NIFs経由でElixirから利用できるようにしました。速度の上で大きな比重を占める行列積について実用速度を確保しました。cuPyには及ばないものの実用速度の範囲であろうと思います。cuMatrixについて下記に記しました。

https://qiita.com/sym_num/items/5ca616ccb5b74b3d52d7
https://qiita.com/sym_num/items/cefc44b7cf76a3859f2a
https://qiita.com/sym_num/items/7eb057cd51f70cb5d181

ソース

進行中のコードは下記にて公開しています。
https://github.com/sasagawa888/deeppipe2

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした