Chainerライブラリのコンパイルについて

25 views
Skip to first unread message

Naoya Otaka

unread,
Jun 25, 2019, 3:01:17 AM6/25/19
to Chainer Japanese User Group
大学院生で,現在Chainerの勉強を行っています。

プログラムの実行時間高速化を目標に,Chainerを用いたプログラムをコンパイルしたいと考えているのですが,どのように行えば良いのでしょうか?

pyinstallerによるコンパイルを試してみたのですが,上手くできませんでした。

Keisuke Fukuda

unread,
Jun 26, 2019, 3:42:16 AM6/26/19
to Naoya Otaka, Chainer Japanese User Group
福田と申します。

Pythonはスクリプト言語ですので、C言語のような「コンパイル」という
概念はありません。

とはいえ、内部的にはバイトコードと呼ばれる内部形式に変換して
実行していますので、一応コンパイルという概念は無いことはないですが…
バイトコードまでコンパイルされたものは、 *.py と同じディレクトリに *.pyc
と呼ばれるファイルが作成され、キャッシュされています。
しかし、そもそもPythonが遅いのはそのような理由だけではなく、
バイトコードへの変換を省略したからといって大きく速度が向上するわけではありません。

また、pyinstallerを使ったということですが、私の理解が正しければ、
「Pythonの言語システムをインストールすることなく、スクリプトを単体で
配布できるようにする」ことが目的のツールだと思います。
「コンパイルによって速度を向上する」ものではありません。

もしプログラムの速度が問題ということでしたら、別途、
ここで具体的に相談されると良いと思います。
一般的には、まずプロファイルを取って遅い部分を特定し、そこを集中的に
改善すると良いと思います。

もし、漠然と「Pythonは遅いらしいと聞くので、なんとなく速くしたい」という
ことでしたら、「ハイパフォーマンスPython」などの書籍をお読みになると
良いと思います。

以上まとめますと、
・Pythonには、(おそらく想像されている意味での)コンパイルという概念はない
・pyinstallerは目的が違うツール
・プログラムの速度が遅い場合はプロファイルを取ってからチューニング、あるいは改めて個々で相談
・「ハイパフォーマンスPython」を読む
となります。

よろしくおねがいします
福田



2019年6月25日(火) 16:01 Naoya Otaka <naosan...@gmail.com>:
大学院生で,現在Chainerの勉強を行っています。

プログラムの実行時間高速化を目標に,Chainerを用いたプログラムをコンパイルしたいと考えているのですが,どのように行えば良いのでしょうか?

pyinstallerによるコンパイルを試してみたのですが,上手くできませんでした。

--
このメールは Google グループのグループ「Chainer Japanese User Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには chainer-jp+...@googlegroups.com にメールを送信してください。
このグループに投稿するには chain...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/chainer-jp/37e8ef71-018c-4e54-ad8f-4c977e046573%40googlegroups.com にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。


--
----
Keisuke Fukuda <kfu...@preferred.jp>
Engineer@Preferred Networks, Inc.

Naoya Otaka

unread,
Jun 26, 2019, 4:13:37 AM6/26/19
to Chainer Japanese User Group
福田様

細かいご返事ありがとうございます。
今のところ、漠然と「プログラムが遅いから早く実行したい」と思っている段階なので、「ハイパフォーマンスPython」を読んでみたいと思います。
Reply all
Reply to author
Forward
0 new messages