Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@sym_num

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

More than 1 year has passed since last update.

再始動

以前、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

2
Help us understand the problem. What is going on with this article?
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
sym_num
LALの笹川です。よろしくお願いします。
fukuokaex
エンジニア/企業向けにElixirプロダクト開発・SI案件開発を支援する福岡のコミュニティ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?