- ユーザーズ・ガイド
- 事前トレーニング済モデルからONNX形式への変換
- ONNXモデルへの事前トレーニング済モデルの変換: エンドツーエンドの手順
11.1 ONNXモデルへの事前トレーニング済モデルの変換: エンドツーエンドの手順
この項では、OML4Pyクライアントのインストールから、Oracleが提供するPythonユーティリティ・パッケージを使用したONNX形式での事前トレーニング済埋込みモデルのダウンロードまでの、エンドツーエンドの手順について説明します。
これらの手順では、
/etc/yum.repos.d
にOracle Linux 8リポジトリを構成してあること、Autonomous Databaseを使用している場合はウォレットを構成してあること、必要な場合はプロキシを設定してあることが前提となっています。
- Pythonのインストール:
sudo yum install libffi-devel openssl openssl-devel tk-devel xz-devel zlib-devel bzip2-devel readline-devel libuuid-devel ncurses-devel libaio mkdir -p $HOME/python wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz tar -xvzf Python-3.12.0.tgz --strip-components=1 -C /home/$USER/python cd $HOME/python ./configure --prefix=$HOME/python make clean; make make altinstall
- 変数
PYTHONHOME
、PATH
およびLD_LIBRARY_PATH
を設定します:export PYTHONHOME=$HOME/python export PATH=$PYTHONHOME/bin:$PATH export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
- python3およびpip3のシンボリックリンクを作成します:
cd $HOME/python/bin ln -s python3.12 python3 ln -s pip3.12 pip3
- Pythonからデータベースに埋込みモデルをエクスポートする場合は、Oracle Instant Clientをインストールします。ファイルにエクスポートする場合は、ステップ4と5をスキップして、ステップ6の環境変数の下のノートを確認します:
cd $HOME wget https://download.oracle.com/otn_software/linux/instantclient/2340000/instantclient-basic-linux.x64-23.4.0.24.05.zip unzip instantclient-basic-linux.x64-23.4.0.24.05.zip
- 変数
LD_LIBRARY_PATH
を設定します:export LD_LIBRARY_PATH=$HOME/instantclient_23_4:$LD_LIBRARY_PATH
- 環境ファイルを作成します(たとえば、
env.sh
。このファイルでは、PythonおよびOracle Instant Clientの環境変数を定義し、各OML4Pyクライアント・セッションの前にこれらの環境変数をソースにします)。または、環境変数定義を.bashrc
に追加して、ユーザーがLinuxマシンにログインしたときにそれらが定義されるようにします。# Environment variables for Python export PYTHONHOME=$HOME/python export PATH=$PYTHONHOME/bin:$PATH export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
ノート:
Oracle Instant Clientの環境変数 - モデルをデータベースにエクスポートするためにOracle Instant Clientがインストールされている場合のみ。LD_LIBRARY_PATH=$HOME/instantclient_23_4:$LD_LIBRARY_PATH
をエクスポートします。 - 次に示す必要なサードパーティ・パッケージを含む、requirements.txtという名前のファイルを作成します。
--extra-index-url https://download.pytorch.org/whl/cpu pandas==2.1.1 setuptools==68.0.0 scipy==1.12.0 matplotlib==3.8.4 oracledb==2.2.0 scikit-learn==1.4.1.post1 numpy==1.26.4 onnxruntime==1.17.0 onnxruntime-extensions==0.10.1 onnx==1.16.0 torch==2.2.0+cpu transformers==4.38.1 sentencepiece==0.2.0
- pip3をアップグレードし、requirements.txt内にリストされているパッケージをインストールします。
pip3 install --upgrade pip pip3 install -r requirements.txt
- OML4Pyクライアントをインストールします。OML4Pyダウンロード・ページからOML4Py 2.0クライアントをダウンロードし、それをLinuxマシンにアップロードします。
unzip oml4py-client-linux-x86_64-2.0.zip pip3 install client/oml-2.0-cp312-cp312-linux_x86_64.whl
- すべての事前構成済モデルのリストを取得します。Pythonを起動し、
oml.utils
からEmbeddingModelConfigをインポートします。python3 from oml.utils import EmbeddingModelConfig EmbeddingModelConfig.show_preconfigured()
['sentence-transformers/all-mpnet-base-v2', 'sentence-transformers/all-MiniLM-L6-v2', 'sentence-transformers/multi-qa-MiniLM-L6-cos-v1', 'ProsusAI/finbert', 'medicalai/ClinicalBERT', 'sentence-transformers/distiluse-base-multilingual-cased-v2', 'sentence-transformers/all-MiniLM-L12-v2', 'BAAI/bge-small-en-v1.5', 'BAAI/bge-base-en-v1.5', 'taylorAI/bge-micro-v2', 'intfloat/e5-small-v2', 'intfloat/e5-base-v2', 'prajjwal1/bert-tiny', 'thenlper/gte-base', 'thenlper/gte-small', 'TaylorAI/gte-tiny', 'infgrad/stella-base-en-v2', 'sentence-transformers/paraphrase-multilingual-mpnet-base-v2', 'intfloat/multilingual-e5-base', 'intfloat/multilingual-e5-small', 'sentence-transformers/stsb-xlm-r-multilingual']
- 次のうちから選択します:
DBMS_VECTOR.LOAD_ONNX_MODEL
を使用してデータベースに手動でアップロード可能な、ONNXファイルを生成するには、SQLクイック・スタートのステップ3を参照し、ステップ12と13をスキップします。- モデルをデータベースに直接アップロードするには、このステップをスキップし、ステップ12に進みます。
事前構成済の埋込みモデルをローカル・ファイルにエクスポートします。oml.utils
からEmbeddingModelをインポートします。from oml.utils import EmbeddingModel # Export to file em = EmbeddingModel(model_name="sentence-transformers/all-MiniLM-L6-v2") em.export2file("all-MiniLM-L6-v2", output_dir=".")
- 事前構成済の埋込みモデルをデータベースにエクスポートします。資格証明およびデータベース環境と一致するように、データベース接続を使用して更新する場合。
ノート:
ステップ12が正しく機能するように、まずステップ4と5を完了します。# Import oml library and EmbeddingModel from oml.utils import oml from oml.utils import EmbeddingModel # Set embedded mode to false for Oracle Database on premises. This is not supported or required for Oracle Autonomous Database. oml.core.methods.__embed__ = False # Create a database connection. # Oracle Database on-premises oml.connect("<user>", "<password>", port=<port number> host="<hostname>", service_name="<service name>") # Oracle Autonomous Database oml.connect(user="<user>", password="<password>", dsn="myadb_low") em = EmbeddingModel(model_name="sentence-transformers/all-MiniLM-L6-v2") em.export2db("ALL_MINILM_L6")
- SQLを使用してモデルが存在することを確認します:
sqlplus $USER/pass@PDBNAME;
select model_name, algorithm, mining_function from user_mining_models where model_name='ALL_MINILM_L6';
--------------------------------------------------------------------------- MODEL_NAME ALGORITHM MINING_FUNCTION ------------------------------ ------------------------------------------- ALL_MINILM_L6 ONNX EMBEDDING
親トピック: 事前トレーニング済モデルからONNX形式への変換