Anaconda Repository for IBM Cloud Pak for DataのサービスをWatson Studioから利用する

##はじめに
Anaconda Repository for IBM Cloud Pak for Data サービスは、IBM Cloud Pak for Dataのカタログにはリストされない、カタログ外部のサービスです。
Anaconda Repository for IBM Cloud Pak for Dataを利用すると、データ・サイエンティストがWatson StudioでJupyter Notebookを作成する際に利用するパッケージのリポジトリーを制御、管理することができるようになります。
特に以下のような利点が挙げれらます。
ー　所属企業の基準に応じたパッケージのブロック、除外、組み込み
ー　チームがダウンロードできるパッケージや、それらにアクセスできるユーザーの指定
ー　機械学習のパイプラインからの脆弱性や信頼できないソフトウェアの排除
ー　依存パッケージの管理と、ユーザーへの迅速なアクセスの提供 
分析プロジェクトのデータ・サイエンティストは、インターネットにアクセスしなくてもCondaチャネルやリポジトリーのパッケージなどが含まれるカスタム環境定義を作成でき、それらの環境を使用してJupyter Notebook やスクリプトを実行できます。
##やってみる
以下の記事では予め用意したAnaconda RepositoryのチャネルをLocal PCのminicondaから接続しています。
Anaconda Repository for IBM Cloud Pak for DataはRed Hat Open Shiftのノードには導入できないことに注意してください。Anaconda Repository for Cloud Pak for Data は、別のLinuxシステムに導入する必要があります。

https://qiita.com/kawada2017/items/00050724428d40049946

https://qiita.com/kawada2017/items/3b86096027bff5527df2

今回はWatson Studioの環境からAnaconda Repositoryのチャネルに接続してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/6ae53a0e-d881-d629-4c64-19e8d8be8f70.png)
　　　　　　　　　　図１.　Anaconda Repositoryを利用する
##環境
ー　Anaconda Team Edition 6.1.3(OEM版のIBM Anaconda Repository for IBM Cloud Pak for Dataを導入)
ー　IBM Cloud Pak for Data 3.5.2(Watson Studio)
##Condaの構成
こちらのマニュアル記述に沿って必要な構成を行います。
[Anaconda Repository for Cloud Pak for Data の管理](https://www.ibm.com/support/knowledgecenter/ja/SSQNUZ_3.5.0/wsj/analyze-data/anaconda.html)

Anacondaで作成したチャネルを使用するよう、Cloud Pak for Dataの conda 構成（ .condarc ファイル）を変更します。

###1. 開始
まず端末ウィンドウで、Open Shift クラスターに対し`oc login`を行い、`oc project <projectname>` と入力して、Cloud Pak for Data がインストールされているプロジェクト (名前空間) に移動します。

###2. 構成ファイルの識別
#####2-1 `/user-home/_global_/config/conda/`ディレクトリーをマウントする nginx ポッドを判別します。

```
ibm_nginx_pod=`oc get pods -l component=ibm-nginx -o jsonpath='{.items[0].metadata.name}'`
```

#####2-2.既存の`.condarc` ファイルをローカルのユーザーのホーム・ディレクトリーにコピーするか、新しい `.condarc`ファイルを作成します。
   
 (1) `.condarc` ファイルが サーバー上の`/user-home/_global_/config/conda/`に存在するかどうかを確認します。

```
oc exec ${ibm_nginx_pod} -- ls -la /user-home/_global_/config/conda/
```

(2) `.condarc`ファイルが存在しない場合、ローカル・ファイル・システムの`/home/<username>/`に `.condarc`ファイルを作成します。

(3) `.condarc`ファイルが `/user-home/_global_/config/conda/`に存在する場合、このファイルをローカル・ファイル・システムの`/home/<username>/` にコピーします。 

```
oc cp ${ibm_nginx_pod}:/user-home/_global_/config/conda/.condarc /home/<username>/.condarc
```
###3. 構成ファイルの編集
(1) Anaconda　RepositoryのチャネルとそのURLを`.condarc`ファイルに追加します。
以下のフォーマットに従ってください。

```
channel_alias: http://<AnacondaRepositorywithIBM_URL>/api/repo
 channels:
     - <channel_names>
 default_channels:
     - http://<AnacondaRepositorywithIBM_URL>/api/repo/<channel_names>

```

以下修正例です。

```
channel_alias: http://myhost.com/api/repo
channels:
  - mychannel
  - mychannel2
default_channels:
     - https://myhost.com/api/repo/mychannel
     - https://myhost.com/api/repo/mychannel2
```
            
(2)`/home/<username>/`にあるローカルで変更された`.condarc`ファイルを、クラスターの`/user-home/_global_/config/conda/`にコピーして戻します。

```
oc cp /home/<username>/.condarc ${ibm_nginx_pod}:/user-home/_global_/config/conda/.condarc 
```
これで指定したレポジトリーを利用できるようになりました。

##Anaconda Repositoryの利用
###1. Notebookの作成
Watson Studioの画面で新しいNotebookを作成します。
出来上がった Notebookが利用するレポジトリーを確認してみましょう。condaの構成を確認します。Notebookから`conda info`を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/6c027617-cc3e-0045-9a82-618eb2a6e368.png)

channel URLs部分では`.conda`ファイルで指定した、Anacondaのプライベートリポジトリを参照していることがわかります。
次にnumpyパッケージをsearchしてみます。
Anacondaのチャネルから探していることがわかります。
![スクリーンショット 2021-04-09 11.28.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/e3714cc6-79e7-1a28-0c37-c564aa1d5d48.png)

下記は`.condarc`ファイルを編集しない場合にNotebookに表示される構成とパッケージ入手の様子です。
接続先チャネルを明示的に`.condarc`ファイルで指定しない場合、デフォルトのチャネルとして`repo.anaconda.com`にある`pkgs/main`が利用されていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/05a68a4b-5708-d893-2fcf-55e0d458c41c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404035/4b7029e5-1397-5db4-2375-aac53aee881b.png)
##おわりに
Anaconda Repository for IBM Cloud Pak for Dataを利用すると、データ・サイエンティストがWatson StudioでJupyter Notebookを作成する際、利用するパッケージのリポジトリーを制御、管理することができるようになります。
インターネットへのアクセスが制限される環境など、自分でパッケージのレポジトリーを用意する必要がある場合など利用を検討すると良いでしょう。