記事
· 2021年11月18日 13m read

Python 3をHealthShareにバインディングした深層学習デモキット(パート1)  

Python 3をHealthShareにバインディングした深層学習デモキット(パート1)
キーワード:  Anaconda、Jupyterノートブック、TensorFlow GPU、ディープラーニング、Python 3、HealthShare    

1. 目的

この「パート1」では、Python 3をHealthShare 2017.2.1インスタンスにバインドして、「単純」かつ一般的なディープラーニングデモ環境をセットアップする方法を段階的に簡単に説明します。  私は手元にあるWin10ノートパソコンを使用しましたが、このアプローチはMacOSとLinuxでも同じように実装できます。

先週、PYPL Indexにおいて、Pythonが最も人気のある言語としてJavaを超えたことが示されました。  TensorFlowも研究や学術の分野において非常に人気のある強力な計算エンジンです。 HealthShareは、ケア提供者に患者の統一介護記録を提供するデータプラットフォームです。

これらを1つのキットにまとめることはできるでしょうか。また、これを実現する上での最も単純なアプローチは何でしょうか。  ここでは、このトピックの最初のステップを一緒に試してから、次に試すことのできるデモについて検討しましょう。  

2. 範囲と免責事項

ここで構築しようとしているデモキットには、次のコンポーネントが含まれます。

  •  Anaconda - 十分に構造化されたパッケージ管理で人気のあるデータサイエンスプラットフォーム。 
  • TensorFlow - 強力な計算エンジンを備えた機械学習プラットフォーム。
  • Theano - ML用計算エンジンのPythonライブラリ。 オプションで、TensorFlowの代替として利用できます。
  • Keras - TensorFlowまたはTheanoエンジン上に配備されるPython Deep Learningライブラリ。 
  • Jupyterノートブック - Anacondaパッケージに含まれます。
  • Python 3 - Anacondaパッケージに含まれます。
  • HealthShare - HealthShare 2017.2.1インスタンスを使用します。

... ... そして、Win10ノートパソコンです。   

私のDellノートパソコンにはたまたまローエンドのGPU GeForce 840Mが搭載されています。強力ではありませんが、それでもデモのトレーニング速度は3倍高められます。

それ以外は、以下のすべてのステップはMacOS(私のはMac Miniです)かLinux環境(たとえばAWSでUbuntuも試しました)で十分に機能します。  

HealthShare 2017インスタンスは、便宜上、デモDBとして使用されていますが、ここで始めようとしている基本的な実験は、CacheまたはEnsembleのインスタンスにおいても機能し、最終的にはIRISにおいても機能すると思っています。  

免責事項: これは、PoCデモキットを一緒に使用することで、コミュニティの関心を引くことを狙いとした記事です。 何らかの手段または合法的なブランドによる公式リリースまたは正式発表では決してありません。 内容や範囲は、いずれ空きのある時間に、必要に応じて変更されることがあります。 

3. 前提条件

ここでは、ANN、AI、ディープラーニング、またはTensorFlowなどの知識や使用経験は必要ありません。 Python初心者でも十分に使用できます。

ノートパソコンやサーバーにGPUは必要ありません。 ただし、搭載されているのであれば、そのドライブを更新する必要があるかもしれません。 私の場合はここからドライバーをダウンロードしました。

ちょっとした注意: 最後の警告7.1を参照してください。

4. デモ環境のセットアップ - 手順

4.1 Anaconda環境のインストール

4.1.1 ダウンロードとインストール 

次のリンクからAnacondaリリースをダウンロードします。この記事を書いた2019年3月時点でのダウンロード最新バージョンは、Anaconda 2018.12(Python 3.7)です。

このリンクにある簡単な画面ごとの段階的な指示に従って、Anacondaベース環境をインストールします。 

注意: 同じリンクから、MacOSまたはLinuxホスト用のリリースをダウンロードできます。 

4.1.2 Anacondaインストールのテスト

このリンクに従ってインストールを段階的にテストし、PythonとJupyterノートブックが正しく動作することを確認します。ただし、Spyder IDEは必要ありません。 

リンク先の指示にあるように、WindowsスタートまたはWindowsコマンドラインからJupyterノートブックを起動できることを確認します。

 

4.2 TensorFlow環境のインストール 

Anaconda PromptウィンドウでCondaコマンドを使用して、TensorFlowエンジンをAnacondaパッケージとしてインストールします。

手順は次のとおりです。

            1. Anaconda Promptウィンドウを起動します。CondaバージョンとPythonバージョンを確認してください。

(base) C:\>conda -V

conda 4.5.12

(base) C:\>python -V
Python 3.7.1

           2. 「tensorflow」という新しい環境を作成して、アクティブ化します。

(base) C:\>conda create -n tensorflow
Solving environment: done

.... ... ... ...
(base) C:\>conda activate tensorflow

(tensorflow) C:\>

           3. 指定されたCondaチャンネルを介して、TensorFlowパッケージをインストールします。

(tensorflow) C:\>conda install -c conda-forge tensorflow

このステップでは、非常に大量の具体的なパッケージをダウンロード、解決、アップグレード/ダウングレードするため、かなりの時間が掛かります。

          4. TensorFlowが正常にインストールされたことをテストします。

 tensorflow) C:\>python
Python 3.6.7 (default, Feb 28 2019, 07:28:18) ... .... ... ... 
>>> import tensorflow as tf
>>> se=tf.Session()
>>> print(se.run(tf.constant('Hello Tensorflow')))
b'hello TensorFlow!'

>>> print(tf.__version__)
1.10.0

>>> quit()

(tensorflow) C:\>

 

4.3 GPU環境のインストール

TensorFlow GPU環境と同様の手順でインストールします。

1. 「Tensorflow」という新しい環境を作成して、アクティブ化します。

(base) C:\>conda create -n tensorflow-gpu
Solving environment: done

... ... 
(base) C:\>conda activate tensorflow-gpu

(tensorflow-gpu) C:\>

2. チャンネルを指定せずに(「tensorflow」ではなく)「tensorflow-gpu」パッケージをインストールします。 

(tensorflow-gpu) C:\>conda install tensorflow-gpu 

この手順では、すべてのパッケージのダウンロード、解決、インストールに時間が掛かります。

3. インストールを検証します。 

>>> import tensorflow as tf
>>> se = tf.Session()
2019-03-14 14:02:52.423895: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-03-14 14:02:53.081332: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties:
name: GeForce 840M major: 5 minor: 0 memoryClockRate(GHz): 1.124
pciBusID: 0000:03:00.0
totalMemory: 2.00GiB freeMemory: 1.65GiB
2019-03-14 14:02:53.087514: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-03-14 14:08:18.789761: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-03-14 14:08:18.794278: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990]      0
2019-03-14 14:08:18.796348: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0:   N
2019-03-14 14:08:18.804907: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1395 MB memory) -> physical GPU (device: 0, name: GeForce 840M, pci bus id: 0000:03:00.0, compute capability: 5.0)

注意: この手順ではCUDA gpuライブラリが再構築されているため、かなりの時間が掛かることがあります。 問題がある場合は、Anaconda Promptを「管理者として実行」で再起動し、この手順を再試行してください。 私の問題は、2回ほど再起動して解決されました。 

>>> print(se.run(tf.constant('Hello')))
b'Hello'
>>> print(tf.__version__)
1.13.1

では、このAnacondaの環境をリスト表示しましょう。 

(base) c:\>conda env list
# conda environments:
#
base                  *  C:\ProgramData\Anaconda3
tensorflow               C:\Users\zhongli\AppData\Local\conda\conda\envs\tensorflow
tensorflow-gpu           C:\Users\zhongli\AppData\Local\conda\conda\envs\tensorflow-gpu

 

4.4 Theano環境のインストール(オプション)

Keras構成を試す予定がなく、常にTensorFlowを基盤のエンジンとして使用するのであれば、この手順を省略できます。

そうでない場合は、新しい環境を作成してアクティブ化し、次のコマンドを実行してください: conda install -c conda-forge theano

4.5 Kerasのインストール

Kerasは、このディープラーニングデモスタックの最上位のレイヤーモジュールです。 

今作成した「tensorflow-gpu」環境にインストールしましょう。  注意: ここでは「keras」ではなく「keras-gpu」をインストールしています。

(tensorflow-gpu) c:\>conda install -c anaconda keras-gpu

関連するパッケージがインストールされます。 では、簡単な検証を行いましょう。

(tensorflow-gpu) c:\>python
Python 3.6.8 |Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras as k
Using TensorFlow backend.

「パート2」では、ディープラーニングモデルの実行にJupyterノートブックを使用して、上記でインストールしたすべてのコンポーネントを検証しますが、 その前に、HealthShareインスタンスのインストールとPython 3バインディングを完了しましょう。

 

4.6. HealthShareインスタンスのインストール

私はIntersystems WRCのダウンロードページから標準のHealthShareインストールファイルをダウンロードしました。   

hscore15.032_hsaa15.032_hspi15.032_hsviewer15.032_linkage15.032  Windows 64 Bit EXE

また、いつものように一時ライセンスが必要となりますが、これはInterSystemsの営業部またはサポートに連絡すると取得できます。

インストールが完了すると、バージョン文字列は次のようになります: Cache for Windows (x86-64) 2017.2.1 (Build 801_3_18095U) Mon May 7 2018 14:28:58 EDT [HealthShare Modules:Core:16.0.7669 + Linkage Engine:16.0.7669 + Patient Index:16.0.7669 + Clinical Viewer:16.0.7669 + Active Analytics:16.0.7669]

 

4.7 HealthShareへのPythonバインディングをTensorFlow環境にインストール  

4.7.1 HealthShareインスタンスパスの特定

製品の公式ドキュメント『Python Binding to Intersystems Cache』はこちらにあります。

たとえば、私のHSインスタンスは次のローカルの場所にインストールされています: C:\InterSystems\HS20181

そのため、まず、このISC Python DLLパスをWindowsの「環境パス」に追加しました: C:\InterSystems\HS20181\bin

4.7.2 VC++コンパイラのセットアップ 

次に、「vcvarsall.bat」コマンドを実行して、パスがMS VC++コンパイラ用にセットアップされていることを確認しました。 

私の場合は、[Visual Studio 2017]->[Tools]->[Get Tools and Features]メニューに移動し、以下のように「Desktop Development with C++」がインストールされている(選択済み)ことを再確認しています。この選択済みのチェックがない場合は、インストールする必要があります。  すると、デフォルトのディレクトリ(例: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build **)に「vcvarsall.bat**」が表示されるようになります。

 

4.7.3 HealthShareインスタンスへのPython 3バインディングのインストール

次に、前のセクションでインストールした「tensorflow-gpu」環境に直接「HealthShareへのPython 3バインディング」をセットアップします。

注意: 私は「...setup.py ...」の代わりに「python setup3.py install」を実行しました。

(tensorflow-gpu) c:\>cd c:\InterSystems\HS20181\dev\python

(tensorflow-gpu) c:\InterSystems\HS20181\dev\python>python setup3.py install
enter directory where you installed Cache'c:\InterSystems\HS20181
libdir=c:\InterSystems\HS20181/dev/cpp/lib
include dir=c:\InterSystems\HS20181/dev/cpp/include
libs=['cbind']
running install
running bdist_egg
running egg_info
... ...
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
running build_ext
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\intersys
copying build\lib.win-amd64-3.6\intersys\pythonbind.py -> build\bdist.win-amd64\egg\intersys
... ...

creating stub loader for intersys\pythonbind31.cp36-win_amd64.pyd
byte-compiling build\bdist.win-amd64\egg\intersys\pythonbind31.py to pythonbind31.cpython-36.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
... ...

Processing pythonbind3-1.0-py3.6-win-amd64.egg
creating c:\users\zhongli\appdata\local\conda\conda\envs\tensorflow-gpu\lib\site-packages\pythonbind3-1.0-py3.6-win-amd64.egg
Extracting pythonbind3-1.0-py3.6-win-amd64.egg to c:\users\zhongli\appdata\local\conda\conda\envs\tensorflow-gpu\lib\site-packages
Adding pythonbind3 1.0 to easy-install.pth file

Installed c:\users\zhongli\appdata\local\conda\conda\envs\tensorflow-gpu\lib\site-packages\pythonbind3-1.0-py3.6-win-amd64.egg
Processing dependencies for pythonbind3==1.0
Finished processing dependencies for pythonbind3==1.0

4.7.4 バインディングがHealthShareデータベースインスタンスで機能していることを確認

では、「samples3」パス内の「test.py」を実行しましょう。

(tensorflow-gpu) c:\InterSystems\HS20181\dev\python\samples3>python test.py
Simple Python binding sample
Cache server port (default 1972)? 56778
Connection string: localhost[56778]:SAMPLES
Connecting to Cache server
Connected successfully
Creating database
Opening Sample.Person instance with ID 1 with default concurrency and timeout
Getting the value of the Name property
Value: Zevon,Mary M.
Test completed successfully

上記により、特定のHealthShareデータベース(SAMPLESネームスペース: Sample.Person テーブル)へのPython 3バインディングがtensorflow-gpu環境内で機能していることが確認されました。 

 

5. 次の内容

これで、実際のディープラーニングデモを試すための一般的なツールを使用した基本環境を用意できました。

次の「パート2」では、Jupyterノートブックを使用してサンプルコードを実行し、ほとんどの人が最初に使用する最も古典的なモデルを手始めに、さまざまなモデルや機能の重要な概念を探っていきましょう。 最終的に実際のケースを想像したり収集したりする前に、一般的なサンプルデータをトレーニングまたは予測する上で、最も単純なアプローチや近道を探ります。  

 

6. 謝辞  

ここに記載したほとんどの作業は、静かなクリスマスと年末年始の休暇中にやり直されたものです。 ここに記載されているデモキットについては、HealthShareインスタンスへのPythonバインディングを実行することだけが追加作業として必要でした。

 

7. 警告

7.1 GPU ドライバーの更新: GPUドライバーを直接更新すると、Matlabや一般的なゲーミングプラットフォームなどのほかのアプリケーションに問題が発生することがあると言われました。そこで、修正をいじることに慣れている必要があります。

7.2 簡単なショートカット: 可能な限り、単純なコードやショートカットを使用しようとしています。  考えられる実際のケースや問題については、モデルパラメーターの最適化やデータ正規化に関する正式な方法は常に大変なタスクであるため、ここでのデモデータセットにおいて考慮する必要はありません。 

@Zhong Liさんが書いた元の記事へ
ディスカッション (0)2
続けるにはログインするか新規登録を行ってください