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

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

ただいまの
回答率

88.10%

keras・tensorflowで生成したモデルを古いサーバで動かしたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 511

score 7

下記のバージョンで生成したモデル・重みを指定のサーバで活用したいという要件が出てきました。

・keras2.4.3
・tensorflow-gpu 2.3.0

しかしながら、指定のサーバのCPUがIntel AVXに対応していないため、tensorflow1.5 以前でないと使用できないことが分かりました。

QEMU Virtual CPU version (cpu64-rhel6)

解決方法として、tensorflow1.5ベースで再学習、あるいはサーバの変更 くらいしか手段が思いつかないのですが、これ以外に何か動かす手段はあったりしますでしょうか。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

お使いのサーバースペック、OS、Pythonバージョン、gccバージョンの記載がないため正しい手順を明示できませんが、サーバー資源を有効活用する手段がひとつだけあります。Tensorflow v2.3.0 をサーバー上でビルドする方法です。ただ、QEMUをご利用ですので通常の手順では難しく難易度が高いかもしれません。

1.OpenJDK や CUDA、その他のライブラリをインストール 

2.Bazel 3.1.0 を公式リポジトリからCPUアーキテクチャに合うバイナリをダウンロードしてインストール あるいは Bazel を自力ビルド
Bazelのダウンロード用URL

3.Tensorflow v2.3.0 をClone

$ git clone -b v2.3.0 https://github.com/tensorflow/tensorflow.git

4.Tensorflow v2.3.0 をCUDA有効の状態でビルド

$ cd tensorflow
$ ./configure

 GPUを使用するならCUDA以外の選択肢は全て N を選択

下記はサーバーのRAMが16GBでCPUが4coreの場合を想定したビルド用コマンドです。

$ sudo bazel build \
--config=monolithic \
--config=noaws \
--config=nohdfs \
--config=nonccl \
--config=v2 \
--local_ram_resources=16384 \
--local_cpu_resources=4 \
//tensorflow/tools/pip_package:build_pip_package

ご参考になるかどうかわかりませんが、いつも私がビルドを実施しているときのコマンドを下記にご紹介いたします。
Tensorflowのビルドパラメータサンプル集

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2020/08/08 02:16

    ご回答ありがとうございます。情報不足で申し訳ないです。

    サーバの情報ですが以下の通りです。
    ・GMOクラウドVPS(CPU仮想3コア メモリ2GB)
    ・CentOS 7.7
    ・Python 3.7
    ・gcc 4.8.5

    Django 3.0.3で運用されているWebサイトがあり、同サイト内の一機能として学習済みモデルを使った画像判定機能を入れようという用途です。
    (同サーバ上で学習などをするつもりはありません。)

    ご提示頂いた手順(サーバにGPUはありませんのでCUDAの件を除く)で実施してみました。

    $ sudo bazel build \
    --config=monolithic \
    --config=noaws \
    --config=nohdfs \
    --config=nonccl \
    --config=v2 \
    --local_ram_resources=2048 \
    --local_cpu_resources=3 \
    //tensorflow/tools/pip_package:build_pip_package

    最後の上記手順を行った結果、以下のエラーが発生しました。

    ERROR: An error occurred during the fetch of repository 'local_config_python':
    Traceback (most recent call last):
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 267
    _create_local_python_repository(<1 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 211, in _create_local_python_repository
    _check_python_lib(<2 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 138, in _check_python_lib
    auto_config_fail(<1 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/remote_config/common.bzl", line 12, in auto_config_fail
    fail(<1 more arguments>)
    Configuration Error: Invalid python library path:
    ERROR: Analysis of target '//tensorflow/tools/pip_package:build_pip_package' failed; build aborted: Traceback (most recent call last):
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 267
    _create_local_python_repository(<1 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 211, in _create_local_python_repository
    _check_python_lib(<2 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/py/python_configure.bzl", line 138, in _check_python_lib
    auto_config_fail(<1 more arguments>)
    File "/home/abcdefg/tensorflow/third_party/remote_config/common.bzl", line 12, in auto_config_fail
    fail(<1 more arguments>)
    Configuration Error: Invalid python library path:


    Python自体はインストール済みで運用中ですので、恐らくPathの問題かなと思い調べている所ですが、もし解決策が分かるようでしたら教えた頂けないでしょうか。

    キャンセル

  • 2020/08/10 06:51

    Pythonを検出できていないようです。 下記のあたりの情報が必要になりそうです。
    1. ./configure でどのように指定されたか(全文)
    2. which python の結果
    3. which python3 の結果
    4. python -V
    5. python3 -V

    キャンセル

  • 2020/08/10 09:07

    あ、今気づきましたが、RAM 2GB ですか。 かなり苦しいですね。 RAM 1GB の RaspberryPi3 でビルドを成功させていますが、 --local_cpu_resources=1 でも Out of Memory になるかもしれません。 SWAP のサイズを2GB確保してギリギリかもしれません。

    キャンセル

  • 2020/08/10 09:42

    ご回答ありがとうございます。./configureでのpythonライブラリの指定が誤っていたようです。昨夜気づきました。連絡出来ておらず申し訳ないです。
    ご指摘の通り、ビルド中に Out of Memoryになってしまいました。(SWAP2GBでもダメでした)そのため、昨夜からSWAP容量を4GBにして実施中で、まだしばらくかかりそうです。
    これで無理なら当該環境では難しいと判断します。
    方法については理解出来ましたので、当質問はクローズさせて頂きます。ありがとうございました。

    キャンセル

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

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

関連した質問

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