9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle AI Database 26aiでマルチモーダル検索を実現! ~CLIP ONNXモデルを最速で手に入れる方法~

Last updated at Posted at 2025-11-21

はじめに

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)します。
これにより、画像↔画像、テキスト↔テキストだけでなく、
画像↔テキストのマルチ―モーダル類似度検索が可能となります。

image.png

参考リンク

Qiita

ドキュメント

1. OCI コンピュート インスタンスの作成

下記の「OCIチュートリアルその3」を参考にコンピュートを作成します。
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/

1-1. インスタンスの基本設定

  • OCIコンソールでComputeインスタンスの作成を開始します。

  • インスタンス名を設定します(例:create-onnx-instance)
    image.png

  • 最重要ポイント:イメージの選択
    「イメージの変更」をクリックし、「イメージの選択」から「Oracle Linux Cloud developer 8」を選択します。

この開発者向けイメージには必要な環境がプリインストールされており、セットアップ時間を大幅に短縮できます。
Oracle Linux Cloud developer

image.png

image.png

  • シェイプはVM.Standard.E4.Flexなど、Oracle Linux Cloud developerと互換性があれば何でも問題ありません。

  • SSHキーペアを作成し、秘密鍵をダウンロードして安全な場所に保存します(後のVS Code接続で使用)。
    image.png

1-2. ストレージの確保

デフォルトのブートボリューム(約36GB)では容量不足になる可能性があるため、100GBに拡張します。

「ブート・ボリュームのアタッチ」>「新規ボリュームの作成」を選択します。

ブート・ボリューム・サイズを100GBに変更します。
image.png

image.png

image.png

2. VS Codeでインスタンスに接続

ローカルのVisual Studio Code(VS Code)を使い、リモートでOCIインスタンスに接続することで、ファイル操作やコマンド実行をスムーズに行えます。

2-1. Remote Explorerのインストールと設定

.ssh\configファイルに下記のような設定を記入します。

  • Host:任意
  • HostName:インスタンスのpublic IP addressを指定
  • User:opc
  • port:22
  • IdentityFile:1.で作成したインスタンスの秘密鍵のパスを指定
.ssh\config
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)を開きます。
image.png

「Ctrl + @ 」でTERMINALが開かれます。

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

image.png

実行ファイルが手に入ったので実行します。

そのままNextを押し、zipファイルを作成します。

出来上がった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つのファイル群をドラッグ・アンド・ドロップでアップロードします。

image.png

↓ アップロードが完了したことを確認します。

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を開き、先ほどのコードを貼り付けます。

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は大事に大事に取っておきましょう!
image.png

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?