tencent cloud

Tencent Kubernetes Engine

お知らせ・リリースノート
製品アップデート情報
製品リリース記録
製品の説明
製品の優位性
製品アーキテクチャ
ユースケース
製品機能
リージョンとアベイラビリティーゾーン
クイックスタート
初心者ガイド
標準クラスターのクイック作成
ビギナー向け事例
コンテナアプリケーションのクラウドへのデプロイ Check List
TKE標準クラスターガイド
テンセントクバネティスエンジン
クラスター管理
ネットワーク管理
ストレージ管理
Worker ノードの概要
Kubernetes Object Management
ワークロード
クラウドネイティブサービスガイド
Prometheus監視サービス
TKE Serverlessクラスターガイド
TKE登録クラスターガイド
実践チュートリアル
Serverlessクラスター
ネットワーク
ログ
監視
運用・保守
DevOps
オートスケーリング
よくあるご質問
クラスター類
TKE Serverlessクラスター
運用保守系
サービス類
イメージリポジトリ類
リモート端末類

ディープラーニングコンテナイメージをビルドする

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-04-28 15:30:11

概要

このドキュメントではTKE Serverlessクラスターにディープラーニングをデプロイする一連の実践を記録し、 TensorFlowをデプロイすることから後続のKubeflowを実現するデプロイまで、完全なコンテナのディープラーニング実践方法を提供することを目的としています。このドキュメントでは自作ディープラーニングのコンテナイメージの構築を重点的に紹介し、後のディープラーニングのデプロイタスクにより手軽でスピーディーな完了方法を提供します。
この実践タスクの要件では、パブリックイメージがディープラーニングをデプロイするニーズを満たすことができないため、この実践では自作イメージを選択します。
ディープラーニングフレームワークTensorFlow-gpu以外に、このイメージはさらにGPU トレーニングに必要なcuda、cudnnを含み、TensorFlow公式が提供するディープラーニングモデルを統合します。現在CV、NLP、RSなどの分野のSOTAモデルが含まれています。モデルの詳細については、Model Garden for TensorFlowをご参照ください。

操作手順

1. この例ではDocker コンテナによってイメージを構築します。Dockerfileファイルを準備し、例は次のとおりです。
FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04
RUN apt-get update -y \\
&& apt-get install -y python3 \\
python3-pip \\
git \\
&& git clone git://github.com/tensorflow/models.git \\
&& apt-get --purge remove -y git \\ #不要なコンポーネントは適時アンインストールする(オプション)
&& rm -rf /var/lib/apt/lists/* #aptインストール用のインストールパッケージを削除する(オプション)
&& mkdir /tf /tf/models /tf/data #保存モデルおよびデータを作成するパス。マウントポイントにすることができます(オプション)
ENV PYTHONPATH $PYTHONPATH:/models
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64:/usr/lib/x86_64-linux-gnu#
RUN pip3 install --user -r models/official/requirements.txt \\
&& pip3 install tensorflow
2. 次のコマンドを実行してデプロイを行います。
docker build -t [name]:[tag] .
説明
例えばPython、TensorFlow、cuda、cudnnおよびモデルライブラリなどの必要なコンポーネントのインストールステップは、ここでは説明を省略します。

関連説明

イメージ関連

基本イメージ nvidia/cudaについて、CUDAコンテナイメージはCUDAがサポートするプラットフォームおよびアーキテクチャは使用しやすい配信版を提供します。この選択はcuda 11.3.1、cudnn 8の組み合わせです。その他のバージョン選択については、Supported tagsをご参照ください。

環境変数

このドキュメントのベストプラクティスを行う場合、重点的に環境変数 LD_LIBRARY_PATHに注目する必要があります 。
LD_LIBRARY_PATHはダイナミックリンクライブラリのインストールパスで、通常libxxxx.soの形式です。ここでは主にcudaおよびcudnnをリンクします。例えばlibcudart.so.[version]、ibcusolver.so.[version]、libcudnn.so.[version] などです。llコマンドを実行して確認することができ、下図に示すとおりです。

公式イメージのDockerfileソースコードに基づいて以下のコマンドを実行します
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64
このうち、/usr/local/nvidia/libはcudaパスのソフトリンクを指し、cudaに用意されています。cudnnを付帯するバージョンはcudnnのインストールのみを行い、cudnnには LD_LIBRARY_PATHが指定されていないため、Warningエラーが発生し、GPU リソースが使用できなくなり、エラーは次のように表示されます。
Could not load dynamic library 'libcudnn.so.8'; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory
Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU...
このようなエラーが発生した場合、手動でcudnnパスの追加を試みることができます。ここで以下のコマンドを実行してイメージを実行し、libcudnn.soが所在するパスを確認できます。
docker run -it nvidia/cuda:[tag] /bin/bash
ソースコードからわかるように、cudnnはapt-get installコマンドによってインストールされ、デフォルトで/usr/libにインストールされます。この例ではlibcudnn.so.8の実際のパスは/usr/lib/x86_64-linux-gnu#下で、コロンで後方に補足されます。
バージョンのシステムが異なるなどの原因により、実際のパスにばらつきが生じ、ソースコードおよび実際の観察が難しくなる可能性があります。

後続の操作

後続の操作はTKE Serverlessでディープラーニングを行うというドキュメントをご参照ください。

よくあるご質問

この実践過程で発生した問題は、よくあるご質問というドキュメントを参照してトラブルシューティングを行って解決してください。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック