はじめに
Oracle AI Database 26aiでマルチモーダルembeddingするためのCLIP ONNX(オニキス)のepxportをなるべく簡単に早く実施する方法をまとめてみました。
ONNXをOracle AI Database 26aiに組み込むことで、Oracle AI Database上でembeddingが可能となります。
※ この記事は技術の詳細な説明を省き、とにかく早く、Oracle AI Database 26aiに組み込むためのマルチモーダル埋め込み用ONNXファイルを手に入れることに特化しています。
所要時間
40分程度
前提
- OCIアカウントが利用可能であること
- OCI Computeサービスを利用できること
- ローカルPCはWindows、エディタはVS Codeを利用
ゴール
CLIP(マルチモーダル)のONNXファイルをゲットすること
- clip_img.onnx (画像embeddingモデル)
- clip_txt.onnx (テキストembeddingモデル)
これらのモデルはCLIP(Contrastive Language-Image Pre-training)モデルに基づいて、画像とテキストを同じベクトル空間にベクトル化(Embedding)します。
これにより、画像↔画像、テキスト↔テキストだけでなく、
画像↔テキストのマルチ―モーダル類似度検索が可能となります。
参考リンク
Qiita
- https://qiita.com/msasakaw/items/b5fb048b80a46c35b668
- https://qiita.com/kenwatan/items/153f0f6d2385fffaf606
- https://qiita.com/yuji-arakawa/items/e43e0ad9f0f033fd55ab
ドキュメント
1. OCI コンピュート インスタンスの作成
下記の「OCIチュートリアルその3」を参考にコンピュートを作成します。
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/
1-1. インスタンスの基本設定
-
OCIコンソールでComputeインスタンスの作成を開始します。
-
最重要ポイント:イメージの選択
「イメージの変更」をクリックし、「イメージの選択」から「Oracle Linux Cloud developer 8」を選択します。
この開発者向けイメージには必要な環境がプリインストールされており、セットアップ時間を大幅に短縮できます。
Oracle Linux Cloud developer
-
シェイプはVM.Standard.E4.Flexなど、Oracle Linux Cloud developerと互換性があれば何でも問題ありません。
1-2. ストレージの確保
デフォルトのブートボリューム(約36GB)では容量不足になる可能性があるため、100GBに拡張します。
「ブート・ボリュームのアタッチ」>「新規ボリュームの作成」を選択します。
2. VS Codeでインスタンスに接続
ローカルのVisual Studio Code(VS Code)を使い、リモートでOCIインスタンスに接続することで、ファイル操作やコマンド実行をスムーズに行えます。
2-1. Remote Explorerのインストールと設定
-
VS Codeの拡張機能から「Remote Explorer」をインストールします。
https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer -
Remote Explorerインストール完了後にRemote Explorerのアイコン(プラグのようなマーク)をクリックし、「SSHの設定」ボタンを押して~/.ssh/configファイルを選択します。
.ssh\configファイルに下記のような設定を記入します。
- Host:任意
- HostName:インスタンスのpublic IP addressを指定
- User:opc
- port:22
- IdentityFile:1.で作成したインスタンスの秘密鍵のパスを指定
Host create-onnx-instance
HostName xxx.xxx.xxx.xxx
User opc
port 22
IdentityFile "C:\path\to\private\key\ssh-key-xxxxx.key"
2-2. SSH接続の開始
リロードボタンを押し、create-onnx-instanceのConnect New Windowボタンを押します。
下記の画像の通り、Linux、Continueを選択し、SSH接続します。
接続が完了したらVS Code画面左のファイルアイコンからOpen Foloderを選択し、デフォルトのホームディレクトリ(/home/opc)を開きます。

3. OML4Pyの準備
こちらの記事を参考にします。
Oracle Databaseに学習済みモデルをONNXフォーマットでimportするには、 OML4Pyを使ったONNXのexportが必要です。(OML4Py以外でexportされたONNXフォーマットはImportできない・・・)
とのことなのでOML4Pyをインストールします。
3-1. OML4Py Serverモジュールのダウンロード
Oracle Technology NetworkからOracle Machine Learning for Python をダウンロードページにアクセスし、Serverモジュールをダウンロードします。
https://www.oracle.com/database/technologies/oml4py-downloads.html
出来上がったzipファイルを展開すると、clientフォルダの中にファイルが4個入っています。
後で使うので取っておきます。

4. OCI コンピュート インスタンスに各種インストール
Visual Studio Codeに戻り、1.で作成したインスタンスに対して操作します。
VS Codeのターミナルで、ONNXエクスポートのためのPython仮想環境を構築します。
下記の記事にならって、Python仮想環境を作成します。
4-1. 仮想環境の作成と有効化
ターミナルで下記を実行します。
[opc@create-onnx-instance ~]$ mkdir oml4py
[opc@create-onnx-instance ~]$ cd oml4py/
[opc@create-onnx-instance oml4py]$ python3.12 -m venv .venv
[opc@create-onnx-instance oml4py]$ source .venv/bin/activate
(.venv) [opc@create-onnx-instance oml4py]$
4-2. 依存パッケージリストの作成とインストール
下記を実行してrequirements.txtを作成します。
cat <<EOF > requirements.txt
--extra-index-url https://download.pytorch.org/whl/cpu
pandas==2.2.2
setuptools==70.0.0
scipy==1.14.0
matplotlib==3.8.4
oracledb==2.4.1
scikit-learn==1.5.1
numpy>=2.0.1
onnxruntime==1.20.0
onnxruntime-extensions==0.12.0
onnx==1.17.0
torch==2.6.0
transformers==4.49.0
sentencepiece==0.2.0
EOF
作成されたrequirements.txtからoml4pyの依存パッケージのインストールします。
pip install -r requirements.txt
4-3. OML4Pyクライアントファイルのアップロード
oml4pyフォルダの中にclientフォルダを作成します。
このclientフォルダの中に先ほど2.で作成した4つのファイル群をドラッグ・アンド・ドロップでアップロードします。
4-5. OML4Pyの環境設定スクリプトを実行
下記を実行します。
(.venv) [opc@create-onnx-instance oml4py]$ perl -Iclient client/client.pl
5. ONNXモデルのexport
oml4pyフォルダにexportONNX.pyファイルを作成します。
こちらのドキュメントの
1. Exporting a pre-configured image model to a file:
のpythonプログラムをexportONNX.pyにコピーして実行します。
exportONNX.pyを開き、先ほどのコードを貼り付けます。
from oml.utils import ONNXPipeline
pipeline = ONNXPipeline("openai/clip-vit-large-patch14")
pipeline.export2file("clip")
exportONNX.pyを実行します。
(.venv) [opc@create-onnx-instance oml4py]$ python exportONNX.py
実行が完了すると2つのファイルが生成されます。
- clip_img.onnx
- clip_text.onnx
VS Codeで2つのファイルをそれぞれ右クリックしてダウンロードします。

二つのファイルを手に入れることができました!
以上の手順が地味に時間がかかるので、この二つのONNXは大事に大事に取っておきましょう!















