Google Vertex AIとTeradata Jupyterエクステンションを統合する方法

著者 [Hailing Jiang](Hailing.Jiang@teradata.com)
最終更新日 2022年6月28日

:::note warn
警告
本記事はTeradata Corporationのサイト[Getting Started](https://quickstarts.teradata.com/index.html#getting-access-to-vantage)に掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

# 概要
Teradata Jupyter拡張は、Teradata SQLカーネルといくつかのUI拡張を提供し、ユーザーがJupyter環境からTeradataデータベースに容易にアクセスし、操作できるようにします。Google Vertex AIは、Google Cloudの新しい統合MLプラットフォームです。Vertex AI Workbenchは、データサイエンスワークフロー全体のためのJupyterベースの開発環境を提供します。この記事では、Vertex AIユーザーがMLパイプラインでTeradata拡張を利用できるように、弊社のJupyterエクステンションをVertex AI Workbenchと統合する方法について説明します。

Vertex AI Workbenchは、マネージドノートブックとユーザーマネージドノートブックの2種類のノートブックをサポートしています。ここでは、ユーザー管理型ノートブックに焦点を当てます。スタートアップスクリプトを使用してカーネルと拡張機能をインストールする方法と、カスタムコンテナを使用する方法の2種類があります。

# 前提条件
・Teradata Vantageインスタンスへのアクセス

::: note info
メモ！
Vantageの新しいインスタンスが必要な場合は、[Google Cloud](https://qiita.com/ykswi/items/10a382de5fa5a4a42c50)、[Azure](https://qiita.com/ykswi/items/2c30aa1f5413b16c838c)、[AWS](https://qiita.com/ykswi/items/fba559149ad568678d58)のクラウドにVantage Expressという無料版をインストールすることができます。また、[VMware](https://qiita.com/ykswi/items/ebe1d854c38db9bb0f51)、[VirtualBox](https://qiita.com/ykswi/items/ffadaa375add309f2075)、または[UTM](https://qiita.com/ykswi/items/94995954ae723185c2f7)を使用して、ローカルマシン上でVantage Expressを実行することもできます。
:::


・Vertex AIを有効にしたGoogle Cloudアカウント
・起動スクリプトとTeradata Jupyter拡張パッケージを保存するためのGoogleクラウドストレージ


# 統合について
Vertex AIでTeradata Jupyter Extensionsを実行するには、2つの方法があります。

①	[スタートアップスクリプトを使用する](https://quickstarts.teradata.com/cloud-guides/integrate-teradata-jupyter-extensions-with-google-vertex-ai.html#_use_startup_script)
②	[カスタムコンテナを使用する](https://quickstarts.teradata.com/cloud-guides/integrate-teradata-jupyter-extensions-with-google-vertex-ai.html#_use_custom_container)

この2つの統合方法について、以下に説明します。


# スタートアップスクリプトを使う

新しいノートブックインスタンスを作成する際に、スタートアップスクリプトを指定することができます。このスクリプトは、インスタンスの作成後に一度だけ実行されます。以下はその手順です。

①	Teradata Jupyter 拡張パッケージのダウンロード
[Vantage Modules for Jupyter](https://downloads.teradata.com/download/tools/vantage-modules-for-jupyter)のページから、Teradata Jupyter extensionsパッケージのバンドルLinux版をダウンロードします。
②	Google Cloudのストレージバケットにパッケージをアップロードします。
③	起動スクリプトを作成し、クラウドストレージバケットにアップロードします。
下記はサンプルスクリプトです。クラウドストレージバケットからTeradata Jupyter extensionパッケージを取得し、Teradata SQLカーネルとエクステンションをインストールします。

```:install_Vantage_JupyterExt
#! /bin/bash

cd /home/jupyter
mkdir teradata
cd teradata
gsutil cp gs://teradata-jupyter/* .
unzip teradatasql*.zip

# Install Teradata kernel
cp teradatakernel /usr/local/bin

jupyter kernelspec install ./teradatasql --prefix=/opt/conda

# Install Teradata extensions
pip install --find-links . teradata_preferences_prebuilt
pip install --find-links . teradata_connection_manager_prebuilt
pip install --find-links . teradata_sqlhighlighter_prebuilt
pip install --find-links . teradata_resultset_renderer_prebuilt
pip install --find-links . teradata_database_explorer_prebuilt

# PIP install the Teradata Python library
pip install teradataml

# Install Teradata R library (optional, uncomment this line only if you use an environment that supports R)
#Rscript -e "install.packages('tdplyr',repos=c('https://r-repo.teradata.com','https://cloud.r-project.org'))"
```


④	新しいノートブックを作成し、クラウドストレージバケットからスタートアップスクリプトを追加します。

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/a50b19e5-73a4-09e0-7523-5f11e19893d1.png)

⑤	ノートブックの作成が完了するまで、数分かかる場合があります。完了したら、「**ノートブックを開く**」をクリックします。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/abe4b1c9-917f-ea2d-fcd7-b656c325c62e.png)

# カスタムコンテナを使用する

ノートブック作成時に、カスタムコンテナを提供する方法もあります。

①	Teradata Jupyter エクステンションパッケージのダウンロード
[Vantage Modules for Jupyter](https://downloads.teradata.com/download/tools/vantage-modules-for-jupyter)ページから、Teradata Jupyter extensionsパッケージバンドルLinux版をダウンロードします。
②	このパッケージを作業ディレクトリにコピーし、解凍してください。
③	カスタムDockerイメージの構築

カスタムコンテナは、8080番ポートでサービスを公開する必要があります。Google Deep Learning Containersイメージから派生したコンテナを作成することをお勧めします。これらのイメージは、ユーザ管理ノートブックと互換性があるようにすでに構成されているからです。

以下は、Teradata SQLカーネルおよび拡張機能をインストールしたDockerイメージを構築するために使用できるDockerfileのサンプルです。

```:Sample_Docker
# Use one of the deep learning images as base image
# if you need both Python and R, use one of the R images
FROM gcr.io/deeplearning-platform-release/r-cpu:latest

USER root

##############################################################
# Install kernel and copy supporting files
##############################################################

# Copy the kernel
COPY ./teradatakernel /usr/local/bin

RUN chmod 755 /usr/local/bin/teradatakernel

# Copy directory with kernel.json file into image
COPY ./teradatasql teradatasql/

# Copy notebooks and licenses
COPY ./notebooks/ /home/jupyter
COPY ./license.txt /home/jupyter
COPY ./ThirdPartyLicenses/ /home/jupyter

# Install the kernel file to /opt/conda jupyter lab instance
RUN jupyter kernelspec install ./teradatasql --prefix=/opt/conda

##############################################################
# Install Teradata extensions
##############################################################

RUN pip install --find-links . teradata_preferences_prebuilt && \
    pip install --find-links . teradata_connection_manager_prebuilt && \
    pip install --find-links . teradata_sqlhighlighter_prebuilt && \
    pip install --find-links . teradata_resultset_renderer_prebuilt && \
    pip install --find-links . teradata_database_explorer_prebuilt

# Give back ownership of /opt/conda to jovyan
RUN chown -R jupyter:users /opt/conda

# PIP install the Teradata Python libraries
RUN pip install teradataml

# Install Teradata R library (optional, include it only if you use a base image that supports R)
RUN Rscript -e "install.packages('tdplyr',repos=c('https://r-repo.teradata.com','https://cloud.r-project.org'))"
```


④	作業ディレクトリ（Teradata Jupyter extensionsパッケージを解凍した場所）で、**docker build**を実行してイメージをビルドしてください。

```:docker_build
docker build -f Dockerfile imagename:imagetag .
```

⑤	docker イメージを Google コンテナレジストリまたはアーティファクトレジストリにプッシュする。
docker イメージをレジストリにプッシュするには、以下のドキュメントを参照してください。

○　[コンテナレジストリ。イメージのプッシュとプル](https://cloud.google.com/container-registry/docs/pushing-and-pulling)
○　[アーティファクトレジストリ。イメージのプッシュとプル](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling?hl=en)


⑥	新しいノートブックを作成します。
「**環境**」セクションで、**カスタム・コンテナ・フィールド**を新しく作成したカスタム・コンテナの場所に設定します。

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/21efe7c9-2d52-fd0e-5758-bad2da45aaf5.png)

# さらに詳しく
・[Teradata Jupyter Extensions Website](https://teradata.github.io/jupyterextensions)
・[Teradata Vantage™ Modules for Jupyter Installation Guide](https://docs.teradata.com/r/KQLs1kPXZ02rGWaS9Ktoww/root)
・[Teradata® Package for Python User Guide](https://docs.teradata.com/r/1YKutX2ODdO9ppo_fnguTA/root)
・[Vertex AIのドキュメントです。学習用カスタムコンテナイメージの作成](https://cloud.google.com/vertex-ai/docs/training/create-custom-container)
・[Vertex AIのドキュメントです。カスタムコンテナを使用してユーザー管理型ノートブックインスタンスを作成する](https://cloud.google.com/vertex-ai/docs/workbench/user-managed/custom-container)
・[Vertex AIのドキュメントです。ユーザーマネージドノートブックのインスタンスを作成する](https://cloud.google.com/vertex-ai/docs/workbench/user-managed/create-new)

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)