AIの実行環境構築について

受付中

回答 5

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 459

Blue_Dragon_AI

score 14

AIシステムの「実行環境」の構築には、何が必要でしょうか?

現在、AIモデルをプロトタイプ開発していまして、うまくいけば、ゆくゆくは
実行環境も作りたいなと考えています。
既存のシステムにAI機能を組み込むということを考えていきたいのですが、
Pythonで作ったAIモデルを「推論」するための実行環境を作るには、
どうすればよいかを明らかにしたいと考えています。
実行環境とは、学習済みの推論モデルを実行させることだと考えています。
学習は済んでいる前提です。
実行環境という表現は、本番環境という意味で使っています。

学習はPCで行っていますが、サーバーなどにデプロイする際には、
何が必要なのかのイメージがついていません。

AIモデルのプロトタイプ開発は、Windows10のハイスペックなPCで、
Anaconda、JupyterNotebookで、Python、Tensorflow-gpu + Kerasで
行っています。

具体的な疑問としては、
➀(学習ではなく)推論モデルの実行環境を構築するのには、サーバーに
Anaconda、venvやnvidia-Dockerなどで仮想環境を作るものなのでしょうか?

➁仮想環境にあるプログラムを、外側からコールすることはできるのでしょうか?
Pythonプログラムを、他の言語(Javaなど)からコールするような
イメージでしょうか?既存のシステムはおそらくJavaだと思います。
コールの仕方はどこかで紹介されてたりしますか?

➂AIインフラの構築を請け負う会社などがあったりするのでしょうか?
AIインフラエンジニアの募集するという話でしょうか?
「私できます。」みたいな方はいるのでしょうか?
(→いるとお伺いしました。)

➃AWSなどのクラウドサービスの活用も考えられると思いますが、
参考になるような情報はありますでしょうか?
(最初に質問を書いた時には、混乱して意味不明な質問だったかと思いますが、
ご回答いただいた内容を自分なりに整理して、AWSを活用して、
出来そうなイメージがわいてきました。
ということで何か参考になるような情報がありましたら、お願い致します。
一応、SageMakerでmnistのプログラムをWebAPIにデプロイするところまでは
実際にやってみています。
ただ、AWSを使わずに自前でできれば、それに越したことはないので、
自前でやる選択肢についてもまだ考えたいと思っています。
とはいうものの、「クラウドの方がいいよ。」というご意見があれば、
クラウドを使った実装ももちろん、考えています。ご意見をいただければ幸いです。)

⓹(AWSを使わない場合でも)実行環境の構築は、Linuxが一般的でしょうか?
やはりPCではなく、サーバーを使って構築するようなものでしょうか?
サーバーは、そこまで詳しくはないですが、勉強するつもりです。
まったくわからないわけでもありません。

「開発環境」構築については、ネットでも情報があるようですが、
「実行環境」の構築については情報が少なく、情報収集したいと思っています。
完全な回答でなくて全然構わないので、考えるきっかけ、ヒントをいただけたらと
思っています。宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Blue_Dragon_AI

    2019/08/31 17:46

    言葉の問題なのかもしれませんが、実行環境という言葉を、
    システム製品としての環境、本番環境という意味で使っています。
    学習済みのモデルの実行環境です。

    キャンセル

  • 退会済みユーザー

    2019/09/04 08:55

    複数のユーザーから「問題・課題が含まれていない質問」という意見がありました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

  • Blue_Dragon_AI

    2019/09/04 22:58

    質問を修正してみました。

    キャンセル

回答 5

+5

KerasやTensorflowの知識はありません。

⓵モデルの(学習ではなく)実行にも、KerasやTensorflowのパッケージが必要でしょうか?

おそらく必要です。

必要な場合、Anacondaやvenvなどで仮想環境を作るものでしょうか?
実行環境の構築には、nvidia-Dockerを使いますか?

サーバを建てることになるでしょう。
VMかコンテナかは選択次第です。

⓶実行環境は、Pythonプログラムを、他の言語(Javaなど)からコールするような
イメージでしょうか?
コールの仕方はどこかで紹介されてたりしますか?
仮想環境にあるプログラムを、外側からコールすることはできるのでしょうか?

外部から叩けるWeb APIを用意するなど考えられます。

⓷AIインフラの構築を請け負う会社などがあったりするのでしょうか?
AIインフラエンジニアの募集するという話でしょうか?
私できます、みたいな方はいるのでしょうか?

あるのかもしれませんがAIインフラ専門の開発者はあまり聞いたことがないです。
一般的なサーバサイド・クラウドインフラ開発者なら対応可能だと思います。
サーバ環境を構築することと機械学習そのものの知識は全く別の知識なので。

⓸クラウドサービス(AWSなど)の活用も考えられますが、
既存システムに組み込むということが、ネットワーク経由するAWSと
できるものでしょうか?

ちょっと日本語がよくわからないですが AWSを使って環境構築できるか? という質問であればYesです。

⓹実行環境の構築は、Linuxが一般的ですか?

本番サーバはLinuxが多いと思います。
手元で開発するにはWin/Macでも可能と思います。

やはりPCではなく、サーバーを使って構築するようなものでしょうか?

本番環境はサーバですね。
開発環境は基本的には手元の端末で行い、スペック不足であればクラウドを組み合わせることもあるんじゃないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/31 16:40

    サーバ周りに疎いのですが、Anacondaをサーバーにインストールするのでしょうか?自分でも、調べてみます。
    自分の場合は、PCにanacondaをインストールして、JupyterNotebook上で、AIのプログラムを書いています。

    確かにクラウドサービス(AWS)には、SageMakerというマネジメントサービスがあるので、そこで、作ったプログラムをWebAPI化しておけば、
    既存のシステムからは、WebAPIを叩けば(起動すれば、リクエストすれば)推論結果を返すようにできると思います。
    と思って、Sagemakerでmnist(手書き画像の数字認識)をWebAPI化するところまで試しにやってみたのですが、確かに、それも一手のような気がしています。
    その時は、相手システムにpython環境を作らずにAWSを使ってインターネット回線を使ってやりとりをする、ということですよね。

    キャンセル

  • 2019/08/31 16:42

    PCではAnacondaをインストールして・・ということはやっているのですが、
    サーバーでも同じようにできるということなのでしょうか?という点がぼんやりしています。

    キャンセル

  • 2019/08/31 17:57

    疑問が疑問を読んでいるのですが、Windows上で学習させて保存したモデルのデータファイルをLINUXに持ってきて動くものなのでしょうか?
    LINUX上で学習させないと動かないような気がしてきましたが。

    キャンセル

  • 2019/09/08 19:04

    LinuxサーバーにAnacondaやPython3をインストールすれば良いでしょう。Python単体+仮想環境で良いかと思います。

    キャンセル

+3

とりあえず、(3) 私できます。ので、そういう人もいると思います。具体的にはAIインフラ特化というよりも、ベストな方法の検討とインストールパッケージの作成を含む実行環境の整備全般の実装ですけどね。仮にWindows環境だったら必要なものをMSIにパッケージングしたりと。一般的にはインストーラー周りとITインフラ全般の知識があるソリューションアーキテクトがこの辺のことをよく請け負っている気がします。そしてその「私できます」みたいな人が会社を持っていれば、その分野の仕事を請け負うんだと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/05 00:29

    方法①でやるには、サーバーOS上に仮想環境を構築するAnacondaやvenvをインストールするのでしょうか?
    -> しても良いと思いますけど、仮想環境を構築する理由が私には見当たらないので、私なら仮想環境は構築しないと思います。あと、私は素のPythonにパッケージを追加していくほうが好きなので、Anacondaも使わないと思います。

    仮想環境の外側からは、プログラムを呼び出すことができないという記述があり、どうすれば既存のシステムから、作成したAIプログラムを呼び出すのだろうか?
    -> その記述は嘘、もしくは貴殿の理解が間違えています。仮想環境の外側からでもプログラムは起動できます。また「どうすれば既存のシステムから」という点に関してはRPCという言葉の意味とその実例を知ると解消すると思います。

    貴殿が「AIエンジニア」なのであれば、実行環境はインフラの分かる人に任せる or 自分で座学と手を動かして新たにインフラの知識を身につける のどちらかを選択すると良いと思いますよ。包み隠さずに申し上げますと、貴殿のAI以外のところ、特にOSやネットワークに関する基礎知識が足りていないように感じられますので、そのように提案しています。

    キャンセル

  • 2019/09/05 22:50

    ご回答ありがとうございます。
    だんだんイメージがわいてきました。
    ■「仮想環境を構築する理由が私には見当たらない。」
      ↑
    私もそう思うようになりました。ありがとうございます。
    開発時はともかく、本番で仮想環境を作らなくてはいけない理由はないと思うようになってきました。一瞬、仮想環境を作らずにtensorflowやkerasなどのパッケージを入れられるのか迷いましたが、Python標準のpipで入れたらいいだけですもんね。おっっしゃる通りだと思いました。
    ■「RPCという言葉の意味とその実例を知ると解消すると思います。」
      ↑
    そうですね。JAVAからPythonを起動する方法を調べていて、情報が少ないので、見失っていました。そこからWeb APIを使う方法を漠然と考え始めたのですが、もっと直接起動できる方法を探すべきだと思い直しました。
    JAVAからPythonを起動する方法が(ちょっと探しただけですが)情報が少なかったはずなので、もしこれという情報があれば、お願いいたします。

    ■一点、気になったのは、仮想環境の外側から呼び出せるのか?
    という点でして、仮想環境を使わなければ問題ないのですが、
    https://www.python.jp/install/windows/venv.html
    大きい文字で「仮想環境の使用」の部分の記述で、
    「インストールしたパッケージは、仮想環境内にのみ書き込まれ、元の Python や他の仮想環境からは利用できません。」
    とあって、tensorflowやkerasなどのパッケージは仮想環境に書き込むと、
    呼び出せないように見えますが、どう思われますでしょうか?

    だんだんイメージがわいてきました。ありがとうございます。
    インフラの知識は手を動かして身に着けるつもりです。
    感謝しております。

    キャンセル

  • 2019/09/11 21:56

    > JAVAからPythonを起動する方法
    検索していませんが、Java から「他のアプリケーション」を起動する方法なら、あるんじゃないですか?python という他のアプリケーションを、infer.py などの実行したいファイルを引数に指定して実行するだけです。

    > 仮想環境に書き込むと、呼び出せない
    仮想環境に移る前後で、環境変数 PATH (だけではないかもしれない)を表示してみましょう。
    それだけのことです。

    手を動かす前に頭を使って下さい。でなければ、手も動かせません。

    キャンセル

+3

問題による。

私は、パソコン上で開発・学習して、IoT 機器で実行しています。
学習にはお金や設置場所をかけられますが、問題にが発生している場所ではお金や設置場所を確保できないからです。

追記
1,2は、守秘義務にかかるので、ちょっと。
環境は、環境構築の手順を明確にしています。明確というか、極力スクリプトにしています。pip でインストールするものはバージョンまで指定して requirment.txt を作成しています。

3は質問の意味がわかりません。あなたが書いているコードで、OS の機能を直接操作するコードを書いているのですか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/03 21:34

    ご回答ありがとうございます。
    ①IOT機器には、何のパッケージを、どのようにインストールしていますでしょうか?
    →Pythonインタプリタは必要だと思っています。また、TensoflowやKerasはどのようにインストールしていますか?Anacondaやvenvを使って仮想環境を作っているのでしょうか?

    ②ちなみにIOT機器は、ラズパイですか?

    ③また、私はWindows10ベース上でTensorflow+Kerasで学習させていますが、
     PythonインタプリタはOSごとに存在するので、
     Linuxのラズパイには移植できるでしょうか?

    ご意見をお願いいたします。

    キャンセル

  • 2019/09/05 22:57

    すみません、質問の番号がずれてしまったかもしれません。
    ➂Windows10のPCで作ったモデルを、本番環境のサーバーに移すことはできるのかな?という問題意識です。他の方ものべられていたかと思いますが、
    難しい気がしてきています。

    キャンセル

  • 2019/09/08 19:24

    初めてすることは、何事も試してみるのではないですか?情報集めも大事ですが、環境が違えば結果も違ってきます。あなたが想定する環境で試しましょう。

    キャンセル

+2

感想ですけど相手システムによるんじゃないでしょうか。
ランニングコストかかりますけどクラウド使ってウェブアプリケーション化が環境依存が小さく一番安定はしそうです。
tensorflowのCPU版だとpyinstallerなどでexe化させれば単体実行は可能ですので配布や外部ソフトから叩くのもありですかね。ただ、利用するモジュールなどによってexe化できない場合や環境依存など安定性には疑問視がつきます。
python上で学習したモデルをC#などの別言語版のtensorflowから読み込むことも可能です。
これにより学習はpythonで実行は組み込み先ソフトというのも可能です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/31 16:31

    相手システムがCSVデータを出力するので、そのデータを取り込んでAIで回帰をすることを考えています。
    pyinstallerは知りませんでした。調べてみます。
    (まだ混乱していますが、)
    開発環境とは異なる相手システムに、python環境をインストールすることをぼんやり思い始めているという状況です。
    Pythonはインタプリタなので、pythonインタプリタ=python3.7とかいうやつですよね。あれがあれば、作ったAIプログラムは動くような気がします。
    tensorflowはc++で書かれているから、C#のようなCLR(共通ランタイム)は必要ないんでしたっけ?tensorflowは更にnumpyを呼びに行っていますがCで書かれているので、CLRはいらないか?と考えました。
    やはり、開発環境とは異なる別のシステムにpython環境を構築しようとイメージしていてわからなくなっている気がしてきました。

    キャンセル

  • 2019/09/08 18:56

    PyInstaller は、こちらの質問を参考にしてからの方がよいかと思います。
    https://teratail.com/questions/208581

    キャンセル

+2

⓵モデルの(学習ではなく)実行にも、KerasやTensorflowのパッケージが必要でしょうか?
必要な場合、Anacondaやvenvなどで仮想環境を作るものでしょうか?
実行環境の構築には、nvidia-Dockerを使いますか?

「学習環境」と「実行環境」に違いはありませんので、「実行環境」も「学習環境」と同様にセットアップしてください。

⓶実行環境は、Pythonプログラムを、他の言語(Javaなど)からコールするような
イメージでしょうか?
コールの仕方はどこかで紹介されてたりしますか?
仮想環境にあるプログラムを、外側からコールすることはできるのでしょうか?

「Web API」「RESTful API」といったキーワードで Google 検索してみてください。

⓷AIインフラの構築を請け負う会社などがあったりするのでしょうか?
AIインフラエンジニアの募集するという話でしょうか?
私できます、みたいな方はいるのでしょうか?

「AIインフラエンジニア」という職種は存在しませんが、「MLOpsエンジニア」がそれに近いかもしれません。

⓸クラウドサービス(AWSなど)の活用も考えられますが、
既存システムに組み込むということが、ネットワーク経由するAWSと
できるものでしょうか?

はい、可能です。

⓹(AWSを使わない場合でも)実行環境の構築は、Linuxが一般的でしょうか?
やはりPCではなく、サーバーを使って構築するようなものでしょうか?

Linux サーバーを使うのが一般的です。

開発環境(学習環境)も Windows ではなく Linux を使うことをおすすめします。
Windows で学習したモデルを Linux で実行することも可能ですが、環境の違いによる問題が発生しないとも限らないのでおすすめしません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/06 06:28

    おっしゃっていることが、ようやく理解できて来たような気がします。
    WindowsPCで学習させたものを、Linuxサーバ上に持ってくるのはしんどそうですね。
    モデル確定させてから、本番機と同じ環境で一回だけなら、学習させてデプロイすることもありだと思いますが、サーバーって古いサーバーってGPU積んでるんでしたっけ?
    もろもろ考えると、AWSにデータ飛ばして、推論させて戻してくるのが一番現実的な気がしてきましたが、本番機上にpython環境を作るとすると、ちょっと怖いので仮想環境でなどと考えたりも、再度、してきますが、仮想環境にあるモデルも外側から呼び出すことはできるのでしたでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる