このトピックでは、docテーブルとクエリテーブルでスモークテストを実行して、システムが期待どおりに実行されるかどうかを確認する方法について説明します。
テストの結論
データ型のサポート:
Proxima CEは、
FLOAT、INT8、およびBINARYデータ型のみをサポートします。 これらのデータ型は、それぞれaiteta2のFT_FP32、FT_INT8、およびFT_BINARY32データ型に対応します。Proxima CEは、
DOUBLEおよびINT16データ型をサポートしていません。 これらのデータ型は、それぞれ、α θ のFT_FP64およびFT_INT16データ型に対応する。
Proxima CEは、前述のサポートされているデータ型を期待どおりに使用できます。 Proxima CEは、今後、FLOAT16およびBINARYデータ型をサポートする予定です。 これらのデータ型は、それぞれaithetaのFT_FP16およびFT_BINARY64データ型に対応します。
テスト手順
さまざまな距離メジャータイプでサポートされているデータタイプを学習します。
Proxima2のデータ型の実装は、距離測定タイプやコンバータなどの特定の要因によって決まります。 データ型が関連する距離メジャー型でサポートされていない場合、そのデータ型はProxima2で使用できません。 次の表に、さまざまな距離メジャータイプでサポートされている、またはサポートされていないデータタイプを示します。
距離測定タイプ
FT_FP16
FT_FP32
FT_FP64
FT_INT8
FT_INT16
FT_INT4
FT_BINARY32
FT_BINARY64
SquaredEuclidean
✔️
✔️
❌
✔️
❌
✔️
✔️
✔️
Euclidean
✔️
✔️
❌
✔️
❌
✔️
✔️
✔️
MipsEuclidean
✔️
✔️
❌
✔️
❌
✔️
❌
❌
Geographical
✔️
✔️
❌
❌
❌
❌
❌
❌
Canberra
✔️
✔️
❌
✔️
❌
❌
❌
❌
Manhattan
✔️
✔️
❌
✔️
❌
✔️
✔️
✔️
Chebyshev
✔️
✔️
❌
✔️
❌
❌
❌
❌
InnerProduct
✔️
✔️
❌
✔️
❌
✔️
❌
❌
Matching
❌
❌
❌
❌
❌
❌
✔️
✔️
RussellRao
❌
❌
❌
❌
❌
❌
✔️
✔️
RogersTanimoto
❌
❌
❌
❌
❌
❌
✔️
✔️
Hamming
❌
❌
❌
❌
❌
❌
✔️
✔️
説明距離測定タイプが地理的である場合、次元の数は2でなければなりません。
データを準備します。
データテーブル
説明
docテーブル
BINARY以外のデータ型: 8列10行のランダム値
BINARYデータ型: 32列9行の範囲で0と1のみを含むランダムな値
クエリ表
BINARY以外のデータ型: 8列3行のランダム値
BINARYデータ型: 32列1行の範囲で0と1のみを含むランダムな値
データ生成スクリプト:
# Values CREATE TABLE doc_table_float_0702(pk STRING, vector STRING) PARTITIONED BY (pt STRING); CREATE TABLE query_table_float_0702(pk STRING, vector STRING) PARTITIONED BY (pt STRING); ALTER TABLE doc_table_float_0702 add PARTITION(pt='20210702'); ALTER TABLE query_table_float_0702 add PARTITION(pt='20210702'); INSERT OVERWRITE TABLE doc_table_float_0702 PARTITION (pt='20210702') VALUES ('1.nid','1~1~1~1~1~1~1~1'), ('2.nid','2~2~2~2~2~2~2~2'), ('3.nid','3~3~3~3~3~3~3~3'), ('4.nid','4~4~4~4~4~4~4~4'), ('5.nid','5~5~5~5~5~5~5~5'), ('6.nid','6~6~6~6~6~6~6~6'), ('7.nid','7~7~7~7~7~7~7~7'), ('8.nid','8~8~8~8~8~8~8~8'), ('9.nid','9~9~9~9~9~9~9~9'), ('10.nid','10~10~10~10~10~10~10~10'); SELECT * FROM doc_table_float_0702; INSERT OVERWRITE TABLE query_table_float_0702 PARTITION (pt='20210702') VALUES ('q1.nid','1~1~1~1~2~2~2~2'), ('q2.nid','4~4~4~4~3~3~3~3'), ('q3.nid','9~9~9~9~5~5~5~5'); SELECT * FROM query_table_float_0702; # binary CREATE TABLE doc_table_binary_0706(pk STRING, vector STRING) PARTITIONED BY (pt STRING); ALTER TABLE doc_table_binary_0706 add PARTITION(pt='20210706'); INSERT OVERWRITE TABLE doc_table_binary_0706 PARTITION (pt='20210706') VALUES ('1.nid','0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('2.nid','0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('3.nid','0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('4.nid','0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('5.nid','0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('6.nid','0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('7.nid','0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('8.nid','0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'), ('9.nid','0~0~0~0~0~0~0~0~0~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'); SELECT * FROM doc_table_binary_0706; CREATE TABLE query_table_binary_0706(pk STRING, vector STRING) PARTITIONED BY (pt STRING); ALTER TABLE query_table_binary_0706 add PARTITION(pt='20210706'); INSERT OVERWRITE TABLE query_table_binary_0706 PARTITION (pt='20210706') VALUES ('q1.nid','1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1~1'); SELECT * FROM query_table_binary_0706;スクリプトを実行します。
次のスクリプトでは、例としてFLOATデータ型を使用しています。 他のデータ型のスクリプトも同様です。
jar -Dorg.bytedeco.javacpp.logger.debug=true -resources proxima2_ce_linux.jar -classpath http://schedule@{env}inside.cheetah.alibaba-inc.com/scheduler/res?id=179763045 com.alibaba.proxima2.ce.CentauriRunner -doc_table doc_table_float_0702 -doc_table_partition 20210702 -query_table query_table_float_0702 -query_table_partition 20210702 -output_table output_table_float_0702 -output_table_partition 20210702 -data_type float -dimension 8 -app_id 201220 -topk 3;