MLアプリケーションを簡単に構築するためにGoogle Colaboratoryでmilvusをセットアップする
技術の進歩は、人工知能(AI)とマシンスケール分析をより身近で使いやすいものにしている。オープンソースソフトウェア、公開データセット、その他の無料ツールの普及は、このトレンドを推進する主な力となっている。Milvusと Google Colaboratory(略して "Colab")の2つの無料リソースを組み合わせることで、誰でも強力で柔軟なAIとデータ分析ソリューションを作成することができます。この記事では、ColabでMilvusをセットアップする方法と、Pythonソフトウェア開発キット(SDK)を使って基本的な操作を行う方法を説明する。
ジャンプする
- Milvusとは?
- Google Colaboratoryとは?
- Google ColaboratoryでMilvusを始める
- Google ColabでPythonを使ってMilvusの基本操作を実行する
- MilvusとGoogle Colaboratoryの見事な連携
Milvusとは?
Milvusはオープンソースのベクトル類似度検索エンジンで、Faiss、NMSLIB、Annoyなどの広く採用されているインデックスライブラリと統合することができます。このプラットフォームには、直感的なAPIの包括的なセットも含まれています。Milvusを人工知能(AI)モデルと組み合わせることで、以下のような多種多様なアプリケーションを構築することができます:
- 画像、動画、音声、セマンティックテキスト検索エンジン
- レコメンデーションシステムやチャットボット
- 新薬開発、遺伝子スクリーニング、その他の生物医学アプリケーション。
Google Colaboratoryとは?
Google ColaboratoryはGoogle Researchチームの製品で、誰でもウェブブラウザからPythonコードを書いて実行することができます。Colabは、機械学習とデータ解析アプリケーションを念頭に構築され、無料のJupyterノートブック環境を提供し、Googleドライブと同期し、ユーザーは強力なクラウドコンピューティングリソース(GPUを含む)にアクセスすることができます。このプラットフォームは、多くの一般的な機械学習ライブラリをサポートしており、PyTorch、TensorFlow、Keras、OpenCVと統合することができる。
Google ColaboratoryでMilvusを使い始める
Milvusはサービスのインストールと起動にDockerを使用することを推奨していますが、現在のGoogle Colabクラウド環境はDockerのインストールをサポートしていません。また、このチュートリアルは可能な限り利用しやすくすることを目的としており、誰もがDockerを利用できるわけではありません。Dockerを使わないようにMilvusのソースコードをコンパイルしてシステムをインストール・起動します。
Milvusのソースコードをダウンロードし、Colabで新しいノートブックを作成する。
Google Colabには、必要なコンパイルツールGCC、CMake、Git、ドライバCUDA、NVIDIAなど、Milvusをサポートするすべてのソフトウェアがプリインストールされており、Milvusのインストールとセットアップのプロセスを簡素化している。まず、Milvusのソースコードをダウンロードし、Google Colabで新しいノートブックを作成する:
- Milvusのソースコードをダウンロードする:Milvus_tutorial.ipynb.
Wget https://raw.githubusercontent.com/milvus-io/bootcamp/0.10.0/getting_started/basics/milvus_tutorial/Milvus_tutorial.ipynb
- MilvusのソースコードをGoogle Colabにアップロードし、新しいノートブックを作成する。
Blog_Set Up Milvus in Google Colaboratory for Easy ML Application Building_2.png
Milvusをソースコードからコンパイルする。
Milvusのソースコードをダウンロードする。
git clone -b 0.10.3 https://github.com/milvus-io/milvus.git
依存関係のインストール
% cd /content/milvus/core ./ubuntu_build_deps.sh./ubuntu_build_deps.sh
Milvusソースコードのビルド
% cd /content/milvus/core
!ls
!./build.sh -t Release
# To build GPU version, add -g option, and switch the notebook settings with GPU
#((Edit -> Notebook settings -> select GPU))
# !./build.sh -t Release -g
注意: GPU版が正しくコンパイルされている場合、"GPU resources ENABLED!"通知が表示されます。
Milvusサーバーの起動
LD_LIBRARY_PATHにlib/ディレクトリを追加する:
% cd /content/milvus/core/milvus
! echo $LD_LIBRARY_PATH
import os
os.environ['LD_LIBRARY_PATH'] +=":/content/milvus/core/milvus/lib"
! echo $LD_LIBRARY_PATH
Milvusサーバーをバックグラウンドで起動、実行します:
% cd scripts
! ls
! nohup ./start_server.sh &
Milvusサーバのステータスを表示する:
! ls
! cat nohup.out
注意: Milvusサーバが正常に起動されると、以下のプロンプトが表示されます:
Blog_Set Up Milvus in Google Colaboratory for Easy ML Application Building_3.png
Google ColabでPythonを使ってMilvusの基本操作を実行する
Google Colabでの起動に成功すると、MilvusはPython、Java、Go、Restful、C++の各種APIインターフェースを提供します。以下は、Pythonインターフェイスを使用してColabでMilvusの基本的な操作を行う手順です。
pymilvusをインストールする:
! pip install pymilvus==0.2.14
サーバに接続する:
# Connect to Milvus Server
milvus = Milvus(_HOST, _PORT)
# Return the status of the Milvus server.
server_status = milvus.server_status(timeout=10)
コレクション/パーティション/インデックスを作成する:
# Information needed to create a collection
param={'collection_name':collection_name, 'dimension': _DIM, 'index_file_size': _INDEX_FILE_SIZE, 'metric_type': MetricType.L2}
# Create a collection.
milvus.create_collection(param, timeout=10)
# Create a partition for a collection.
milvus.create_partition(collection_name=collection_name, partition_tag=partition_tag, timeout=10)
ivf_param = {'nlist': 16384}
# Create index for a collection.
milvus.create_index(collection_name=collection_name, index_type=IndexType.IVF_FLAT, params=ivf_param)
挿入とフラッシュ
# Insert vectors to a collection.
milvus.insert(collection_name=collection_name, records=vectors, ids=ids)
# Flush vector data in one collection or multiple collections to disk.
milvus.flush(collection_name_array=[collection_name], timeout=None)
ロードと検索
# Load a collection for caching.
milvus.load_collection(collection_name=collection_name, timeout=None)
# Search vectors in a collection.
search_param = { "nprobe": 16 }
milvus.search(collection_name=collection_name,query_records=[vectors[0]],partition_tags=None,top_k=10,params=search_param)
コレクション/インデックス情報の取得
# Return information of a collection. milvus.get_collection_info(collection_name=collection_name, timeout=10)
# Show index information of a collection. milvus.get_index_info(collection_name=collection_name, timeout=10)
IDによるベクターの取得
# List the ids in segment
# you can get the segment_name list by get_collection_stats() function.
milvus.list_id_in_segment(collection_name =collection_name, segment_name='1600328539015368000', timeout=None)
# Return raw vectors according to ids, and you can get the ids list by list_id_in_segment() function.
milvus.get_entity_by_id(collection_name=collection_name, ids=[0], timeout=None)
パラメータの取得/設定
# Get Milvus configurations. milvus.get_config(parent_key='cache', child_key='cache_size')
# Set Milvus configurations. milvus.set_config(parent_key='cache', child_key='cache_size', value='5G')
インデックス/ベクター/パーティション/コレクションの削除:
# Remove an index. milvus.drop_index(collection_name=collection_name, timeout=None)
# Delete vectors in a collection by vector ID.
# id_array (list[int]) -- list of vector id milvus.delete_entity_by_id(collection_name=collection_name, id_array=[0], timeout=None)
# Delete a partition in a collection. milvus.drop_partition(collection_name=collection_name, partition_tag=partition_tag, timeout=None)
# Delete a collection by name. milvus.drop_collection(collection_name=collection_name, timeout=10)
MilvusとGoogle Colaboratoryは見事に連動します。
Google Colaboratoryは無料の直感的なクラウドサービスで、MilvusのソースコードからのコンパイルやPythonの基本操作を大幅に簡素化します。どちらのリソースも誰でも利用でき、AIや機械学習技術をより身近なものにします。Milvusの詳細については、以下のリソースをご覧ください:
- 幅広いアプリケーションをカバーするその他のチュートリアルについては、Milvus Bootcampをご覧ください。
- システムへの貢献や活用に興味のある開発者の方は、GitHubでMilvusをご覧ください。
- Milvusを立ち上げた会社の詳細については、Zilliz.comをご覧ください。
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word