- 印刷する
- PDF
独立型のインスタンス使用
- 印刷する
- PDF
VPC環境で利用できます。
独立型のインスタンス(Private Instance)を活用して別途の分析環境でデータ演算を実行できます。独立型のインスタンスは、Pythonコードを用いてデータ分析できる Jupyter Notebookを提供し、NAVERクラウドプラットフォームの HOMEROS SDKを含めているので簡単にコードを作成できます。
インスタンス作成
コンソールで新しいインスタンスを作成する方法は、次の通りです。
独立型のインスタンスは、個人会員は最大1個、企業会員は3個まで作成できます。会員のタイプ別ポリシーに沿ってインスタンス作成が制限されることがありますので、インスタンス作成ができない場合、カスタマーサポートまでお問い合わせください。
NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
[Instance作成] ボタンをクリックします。
InstanceId名を入力してライブラリバージョンを選択します。
次の表を参照し VPC、Subnet、サーバタイプを選択します。
サーバタイプ GPU vCPU メモリ ディスク サービスゾーン CPU Intensive - 8個 16GB SSD 50GB KR-2 CPU Intensive - 16個 32GB SSD 50GB KR-2 CPU Intensive - 32個 64GB SSD 50GB KR-2 GPU 1個 8個 90GB SSD 50GB KR-2 GPU 2個 16個 180GB SSD 50GB KR-2 GPU 4個 32個 360GB SSD 50GB KR-2 参考独立型のインスタンスは KR-2ゾーンでのみ提供されます。KR-2ゾーンの Public Subnetを選択します。
Jupyter Notebookを使用するにはパスワードを入力します。
準同型暗号演算およびデータ分析のために、別途のタスクストレージを作成します。準同型暗号キーと暗号文などを保存するストレージの容量を入力します。
- ストレージは最低50GBから最大2,000GBまで入力できます。
- ストレージはインスタンスとは別途 Block Storage料金が発生します。
- インスタンスの作成後にはストレージを追加できません。
- 作成ボタンをクリックして Instanceの作成確認ポップアップで [確認] ボタンをクリックします。
インスタンスリストの確認
作成されたインスタンスはコンソールのインスタンスリストに表示され、リストからインスタンスの開始、停止、返却、パスワードの確認などの管理作業を実行できます。
インスタンスのリストを確認するために、NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
インスタンスを開始する
停止状態のインスタンスを開始する手順は、次の通りです。
- NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
- インスタンスリストから開始するインスタンスを選択し、[開始] ボタンをクリックします。
- 確認のポップアップで [はい] ボタンをクリックします。
インスタンスの停止
インスタンスを停止する手順は、次の通りです。
- NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
- インスタンスリストから停止するインスタンスを選択し、[停止] ボタンをクリックします。
- 確認のポップアップで [はい] ボタンをクリックします。
インスタンスは停止中にも料金が発生します。インスタンスをこれ以上使用しない場合は返却します。
インスタンスの返却
インスタンスを返却する手順は、次の通りです。
返却するインスタンスのタスクストレージも一緒に削除します。必要なデータは事前にバックアップしてください。
- NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
- インスタンスリストから返却するインスタンスを選択し、[停止] ボタンをクリックします。
- インスタンス状態が停止に変更されると、当該インスタンスを再選択し、[返却] ボタンをクリックします。
インスタンスが返却するまで数分かかります。インスタンス返却が完了すると、インスタンスリストから当該インスタンスが消えます。
Jupyter Notebookの活用
Jupyter Notebookにアクセス
インスタンスが実行中状態で Jupyter Notebookにアクセスできます。Jupyter Notebookにアクセスする手順は、次の通りです。
- NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
- インスタンスリストから Jupyter Notebookにアクセスするインスタンスを選択します。
- インスタンスの詳細情報から Jupyter Notebookの URLをクリックします。
Jupyter Notebookアクセスができない場合、次の通りに再起動できます。
- SSHログイン
>> ssh homeros@{SERVER_IP}
>> {JUPYTER_NOTEBOOK_PASSWORD}
- Jupyter Notebookサービスの実行
>> nohup jupyter notebook --config /home/homeros/.jupyter/jupyter_notebook_config.py > /home/homeros/.jupyter/log.out &
インスタンス作成のステップで入力したパスワードを通じて Jupyter Notebookにアクセスできます。パスワードを紛失すると活用できないため管理にご注意ください。
Jupyter Notebookのユースケース
独立型のインスタンスは Jupyter Notebookと HOMEROS SDKを活用するユースケースを提供します。Jupyter Notebook画面から tutorialフォルダに移動すると、様々なユースケースとユースケースの実行に必要なデータがあります。
Jupyter Notebookのユースケースは、次の通りです。
0. Getting Started
Jupyter Notebookのユースケースに関する基本的な説明を提供します。
1. Overview of the basic structure of HOMEROS SDK
HOMEROS SDKを使用するための基本的な使い方とユースケースを提供します。主な内容は次の通りです。
- Context
準同型暗号キーのペアを作成して管理するための基本的な概念となる Contextを説明します。HOMEROS 1.0バージョンでは CKKS scheme基盤の HEaaNライブラリで実装した HEaaNContextを提供しています。 - Data
平文を暗号化するユースケースを提供します。 - Data transfer
暗号文を共有するために提供する関数とユースケースを説明します。 - Operations
準同型暗号演算を行う関数とユースケースを提供します。- 足し算と乗算の演算を説明します。
- 暗号文の最大演算数の Depthを説明するユースケースを提供します。
- Decrypt
暗号文を復号するユースケースを提供します。
2. The statistic operations scenario
HOMEROSで提供している算術演算と統計演算に関するユースケースを提供します。各演算に関する説明と演算を行うために必要な最低 Depthは、次の表をご参照ください。
<算術演算>
演算名 | Depth | 演算説明 |
---|---|---|
Summation | 3 | 2つの暗号文の足し算を行います。 |
Sub | 3 | 2つの暗号文の引き算を行います。 |
Mult | 3 | 2つの暗号文の乗算を行います。 |
Add Const | 3 | 1つの暗号文に定数の足し算を行います。 |
Sub Const | 3 | 1つの暗号文に定数の引き算を行います。 |
Mult Const | 3 | 1つの暗号文に定数の乗算を行います。 |
演算名 | Depth | 演算説明 |
---|---|---|
Summation | Full | 暗号文内の指定したカラムの和を求めます。 |
Mean | Full | 暗号文内の指定したカラムの平均を求めます。 |
Variance | Full | 暗号文内の指定したカラムの分散を求めます。 |
Standard Derivation | Full | 暗号文内の指定したカラムの標準偏差を求めます。 |
Standard Error | Full | 暗号文内の指定したカラムの標準誤差を求めます。 |
Coefficient of Variation | Full | 暗号文内の指定したカラムの変動係数を求めます。 |
Absolute Value | Full | 暗号文の各要素に対する絶対値を求めます。 |
Skewness | Full | 暗号文のすべての要素の歪度を求めます。 |
Kurtosis | Full | 暗号文のすべての要素の尖度を求めます。 |
Correlation | Full | 2つの暗号文の相関係数.を求めます。 |
Covariance | Full | 2つの暗号文の共分散.を求めます。 |
Maximun Value | Full | 暗号文のすべての要素のうち、最大値を求めます。 |
<区間統計の計算>
演算名 | Depth | 演算説明 |
---|---|---|
Confidence interval of mean | Full | 暗号文の平均信頼境界線を求めます。 |
Confidence interval of variance with chi-square distribution | Full | 暗号文のカイ-二乗分布を使用する分散の信頼境界線を求めます。 |
<検定演算>
演算名 | Depth | 演算説明 |
---|---|---|
T-test for the mean of one sample | Full | 1つの標本の平均に対する T検定を求めます。 |
Z-test for proportion of one binomial sample | Full | 1つの二項標本のカバレッジに対する Z検定を求めます。 |
Chi-square test for varinace of one sample | Full | 1つの標本の分散に対するカイ-二乗検定を求めます。 |
T-test for the means of two samples | Full | 2つの標本の平均に対する T検定を求めます。 |
F-test for variances of two samples | Full | 2つの標本の分散に対する F-検定を求めます。 |
3. The categorical operations scenario
カテゴリ型(Categorical)演算とは特定カラムがカテゴリ型の値を持つ時に、条件に適するカラムの統計演算を意味します。HOMEROSで提供しているカテゴリ型算術演算とカテゴリ型の統計演算に関するユースケースを提供します。第02章で提供する大部分の演算を提供し、次の通りのユースケースを追加で提供します。
- 2つの二項標本のカバレッジについての Z検定
- Z分布を通じた母集団の確率に対する信頼境界線
4. Data concatenation scenario
データ結合を通じて互いに異なる機関または企業でデータを共有し、結合分析するシナリオを提供します。
5. K means clustering prediction scenario
K means clusteringは代表的なグループ化の技法の1つとして、ラベルのない、または一部だけあるデータの指導学習のためにラベリングをするか、データの性格に合わせて分類するなどの様々な状況で使用します。HOMEROSで提供している暗号化したデータの K means clustering推論機能に関するユースケースを提供します。
6. Linear SVM prediction scenario
Linear SVM(Support Vector Machine)は、線形データの分類または回帰に主に使う代表的な機械学習アルゴリズムとして、比較的に単純な構造から出る強力な機能があり、様々な分野で使用しています。HOMEROSで提供している暗号化したデータの Linear SVM推論機能に関するユースケースを提供します。
7. Convolutional Neural Network with MNIST dataset prediction scenario
画像分析に最も広く使用されているディープラーニングアルゴリズムの CNN(Convolutional Neural Network)の暗号化した推論ユースケースを提供します。当該ユースケースのために、画像分析で最も広く使用されているユースケースのうちの1つである MNISTを用いて2次元 CNNアルゴリズムの暗号化した推論を提供し、そのため Pytorchで学習した CNNモデルに推論を提供します。
8. Convolutional Neural Network with Fashion MNIST dataset prediction scenario
第07章の CNNのユースケースで推論用のデータセットを Fashion MNISTに変更したユースケースを提供します。
9. Linear Regression With training and prediction scenario
Linear Regressionは単純な構造にもかかわらず、強力なパフォーマンスができる機械学習のアルゴリズムです。HOMEROSで提供している暗号化した状態で Linear Regressionの学習と、学習した暗号化モデルを復号して推論するユースケースを提供します。
10. Logistic Regression With training and prediction scenario
Logistics Regressionは単純な構造にもかかわらず、強力なパフォーマンスができる機械学習のアルゴリズムです。HOMEROSで提供している暗号化した状態で Logistics Regressionの学習と、学習した暗号化モデルを復号して推論するユースケースを提供します。
11. Random forest prediction scenario
Random Forestは代表的なアンサンブルの機械学習モデルとして, Decision Treeがオーバーフィッティングする可能性が高いデメリットを補完し、より多くの分野で使用しています。HOMEROSで提供している暗号化した Random Forest推論のユースケースを提供します。
12. XGBoost prediction scenario
Random Forestは代表的なアンサンブルモデルなら、XGBoostは代表的なブースト機械学習モデルとして分類と回帰の両方を提供し、パフォーマンスとリソースの効率性が高く、たくさんの人気を得て使用されているアルゴリズムです。 HOMEROSで提供している暗号化した XGBoost推論のユースケースを提供します。
13. MLP(Multi Layers Perceptron) prediction scenario
Multi Layer Perceptronは最も基本的なディープラーニングモデルです。HOMEROSで提供している暗号化した MLP推論のユースケースを提供します。
SSHアクセス
インスタンスが実行中状態で SSHでサーバにアクセスできます。SSHにアクセスする手順は、次の通りです。
- NAVERクラウドプラットフォームコンソールの VPC環境で Services > Big Data & Analytics > HEaaN Homomorphic Analytics > Instancesメニューを順にクリックします。
- インスタンスリストから SSHにアクセスするインスタンスを選択します。
- インスタンスの詳細情報の Jupyter Notebookの URLから IPアドレスをコピーします。
- ターミナルまたはパワーシェル(PowerShell)を通じて、次の通りにアクセスできます。SSHアクセス時にインスタンス作成ステップで設定したパスワードを入力します。
>> ssh homeros@{SERVER_IP}
>> {JUPYTER_NOTEBOOK_PASSWORD}
アプリケーションのディストリビューション
Pythonベースの開発フレイムワークの Flaskと Djangoを用いて HOMEROSを活用したサービスのディストリビューション方法を説明します。
開発環境では Flaskと Djangoフレイムワークだけでも WAS(Web Application Server)を構成できるが、パフォーマンスおよびセキュリティなどのためにディストリビューション環境では WSGI(Web Server Gateway Interface)を通じてこのような制約を解決できます。WSGIは Pythonスクリプトがウェブサーバ(Web Server)と効率的に通信するために作成されたインターフェースです。
本ガイドでは代表的な WSGI技術のうちの1つである Gunicornと早い速度、 リバースプロキシおよび SSLなどを提供する代表的なウェブサーバの Nginxを活用したアプリケーションをディストリビューションする方法を説明します。
1. Flaskのインストール
(1) 必要なパッケージのインストール rootではなく homerosアカウントでインストールを行うために --userオプションを入れます。
pip3 install flask --user
pip3 install MarkupSafe --user
pip3 install Jinja2 --user
pip3 install click --user
(2) Flask基本アプリケーション作成 Flaskプロジェクトを作成するフォルダに app.pyファイルを作成し、次のコードを作成します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1080)
- インスタンス外部との接続を許可するには host=「0.0.0.0」設定します。
- 希望するポートは port変数を活用します。
(3) Gunicornとアプリケーション連携8000番ポートをオープンする場合に app.pyファイルのある場所で次のコマンドを実行します。
gunicorn --bind 0.0.0.0:8000 app:app &
2. Djangoのインストール
(1) 必要なパッケージのインストール
python3 -m pip install Django --user
(2) django基本アプリケーション作成アプリケーションを作成するフォルダで次のコマンドを実行します。
django-admin startproject mysite
(3) Gunicornとアプリケーション連携のアプリケーション名 mysiteが位置したフォルダで8000番ポートをオープンする場合に、次のコマンドを実行します。
gunicorn --bind 127.0.0.1:8000 mysite.wsgi:application &
3. Nginx連携
(1) Nginxのインストール(現在基準の最新バージョンの1.20.2を基準に実行)
ソースコードをダウンロードしてビルドを行います。(基準フォルダは/home/homeros/myproject/nginxに仮定します)
wget https://nginx.org/download/nginx-1.20.2.tar.gz
ダウンロードした nginxの tar.gzファイル圧縮を解凍します。
tar zxvf nginx-1.20.2.tar.gz
圧縮を解凍したフォルダに変更します。
cd nginx-1.20.2
(2) ビルド
Configure設定/home/homeros/myproject/nginxパスの下位のログファイルと configファイル、実行ファイルがある sbinファイルを作成するように設定します。
./configure \
--prefix=/home/homeros/myproject/nginx/ \
--user=homeros \
--group=homeros \
--error-log-path=/home/homeros/myproject/nginx/error.log \
--http-log-path=/home/homeros/myproject/nginx/access.log \
--without-http_scgi_module \
--without-http_uwsgi_module \
--without-http_fastcgi_module \
--with-stream
make実行
make
make install実行
make install
(3) 設定/home/homeros/myproject/nginx/confに nginx.confファイルを開いて次の通りに入力します。
vim nginx.conf
server {
listen $nginxポート;
…
location / {
proxy_pass http://127.0.0.1:$gunicornポート;
}
}
例えば、gunicornと連携したポートが8000であり、これを nginxから 8001ポートにプロキシしたい場合に、次の通りに編集します。
server {
listen nginx 8001;
…
location / {
proxy_pass http://127.0.0.1:8000;
}
}
(4) nginxの実行
/home/homeros/myproject/nginx/sbin/nginx
(5) nginxの終了
/home/homeros/myproject/nginx/sbin/nginx -s stop
Cacheデータの削除
HOMEROSで使用する一時ファイルが自動的に削除されない場合に、ストレージ容量が足りなくなることがあります。 もし、保存容量不足によってタスクが不可能な場合に、一時ファイルを削除して保存容量を追加で確保できます。
1. 実行中の Jupyter notebook shutdown
実行中の Jupyter Notebookを shutdownすると Contextを削除して一時ファイルを削除します。
もし、Jupyter Notebookを shutdownしたが、保存容量が確保されない場合に、直接一時ファイルを削除できます。
2. Cacheデータの削除
(1) ターミナルアクセス Jupyter Notebook右上にある [New] >> [Terminal] を介してターミナルアクセスができます。
ターミナルを介してサーバにアクセスするには、次の通りにアクセスします。
>> ssh homeros@{SERVER_IP}
>> {JUPYTER_NOTEBOOK_PASSWORD}
(2) 保存容量の確認
>> df -h
もし、/home下位の容量が足りない場合は、次のコマンドを通じて/home/homeros/.homeros/ファルダの容量を確認します。
du -sh /home/homeros/.homeros/
(3) .homeros下位の一時ファイルの削除.homerosフォルダの容量が足りない場合は、.homerosディレクトリの一時ファイルを削除して保存容量を確保します。
>> rm -rf /home/homeros/.homeros/*
- .homerosディレクトリを削除すると Context作成が不可能になるため、必ず下位のディレクトリまたはファイルのみ削除します。
- リナックス削除コマンドで削除したファイルまたはフォルダは復旧できないのでご注意ください。