質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

89.06%

AIの本番環境構築について

解決済

回答 5

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,376

Blue_Dragon_AI

score 31

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

+6

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 17:57

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

    キャンセル

  • 2019/09/08 19:04

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

    キャンセル

  • 2019/09/28 23:36

    消費税増税前にLinux用のPCを買おうと思っています。要はWindowsなしということです。
    UbuntuOSを入れようと思っていますが、UbuntuOSは①デスクトップ版と➁サーバー版があり、どちらがいいとかありますか、①➁の違いはだいたいわかっていますが、「AI関連ソフトは、動作環境にUbuntuを指定している例が数多く見られます。」という説明をみかけますが、①➁どちらなのだろうと思っています。

    なお、組み込もむことを考えていたアプリは、WindowsPCのデスクトップアプリケーションだということがわかり、Linuxは喫緊の課題ではなくなりました。現在は、そのアプリがc++なのかc#かを調べてもらっている最中で、自分はc++からpythonを起動する方法といった内容のことをネットで調べています。

    キャンセル

+3

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/09/28 23:56

    この質問を読んでいるかたに、「さわって学ぶクラウドインフラ Amazon Web Services 基礎からのネットワーク&サーバー構築」という本はお勧めです。
    AWSの仮想環境で、設定間違えても壊れることないし(よっぽどひどいことしなければ)大丈夫だと思います。なんかインフラってこんな感じかと面白かったです。

    キャンセル

  • 2019/09/28 23:57

    割とあっさりできて、なんとなくわかった気になれます。

    キャンセル

  • 2019/09/29 00:01

    AIのモデルは、一応、マルチモーダルのモデルにしています。

    キャンセル

+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

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

    キャンセル

checkベストアンサー

+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環境を作るとすると、ちょっと怖いので仮想環境でなどと考えたりも、再度、してきますが、仮想環境にあるモデルも外側から呼び出すことはできるのでしたでしょうか?

    キャンセル

  • 2019/10/06 20:47

    現時点の状態として、組み込み先がC#のデスクトップアプリであったことが判明し、
    C#からボタン起動でPythonを起動するプロトタイプを作りました。ライブラリも使えるのか疑問に思ったのでkeras+tensorflowライブラリを使っているmnist(手書き数字認識)を少し作り替えて、C#からPythonをファイル指定で起動したら動きました。上記ライブラリも動いています。
    pyinstallerでexe化したものも起動できました。少し時間がかかるようです。

    あとは、Web経由で起動する方法も考え、モデルをAWSのSagemaker(おそらくLinux)を使ってURLとしてデプロイするところまではできました。リクエストで起動するところはまだです。
    当初、どのように作るのかまったくイメージできていませんでしたが、みなさんのおかげでだいぶイメージができてきました。まだ、課題はいろいろありますが、当初どのように本番環境を作るものかイメージできなかった状況は抜け出せましたので、ひとまずお礼とともに質問を終了しようと思っています。

    キャンセル

+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

    キャンセル

  • 2019/09/28 23:40

    exe化をしなくても、pythonw.exe(←wつきがみそ) で.pyファイルを実行すると動作します。PyInstallerまで頭が回っていませんが、トライしたいと思っています。ありがとうございます。

    キャンセル

  • 2019/10/06 20:36

    pyinstaller できました。c#からデスクトップアプリベースで、起動もできました。
    ありがとうございます。

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る