CREATE MODEL

Lindorm AI引擎支持通过Lindorm SQL创建AI模型,对宽表引擎或时序引擎中的数据进行建模分析。您可以根据业务场景,在CREATE MODEL语句中设置推理任务类型、配置任务参数,创建不同类型的模型,例如文生图、检索问答、时序预测等模型。

引擎与版本

  • CREATE MODEL语法适用于时序引擎和AI引擎。

  • 时序引擎3.4.26及以上版本支持CREATE MODEL语法。

  • AI引擎无版本限制。

重要
  • 要求Lindorm SQL为2.6.1及以上版本。如何查看Lindorm SQL的版本,请参见SQL版本说明

  • 如果您需要创建AI推理服务模型(文本、图像、音视频等非结构化数据的AI分析与处理),需开通2.5.1.1及以上版本的宽表引擎。

语法

CREATE MODEL model_identifer 
FROM {table_identifer | (select_statement) | model_file_path | huggingface_repo | modelscope_repo}
[ TARGET column_identifer ]
TASK ( TEXT_TO_IMAGE | RETRIEVAL_QA | ... )
ALGORITHM ( CHINESE_STABLE_DIFFUSION | CHATGLM_6B | ... )
[ PREPROCESSORS 'string' ]
SETTINGS (
    doc_id_column 'string',
    ...
)

使用说明

模型名称(model_identifer)

模型名称遵循以下要求:

  • 长度为1~255字符。

  • 可包含数字、大写英文字符、小写英文字符、中划线(-)和下划线(_)。

源数据表(table_identifer)

TASK检索类任务(SEMANTIC_RETRIEVAL、RETRIEVAL_QA)和时序类任务(TIME_SERIES_FORECAST、TIME_SERIES_ANOMALY_DETECTION)可以指定数据源表。

当任务类型为时序类任务时,源数据表必须至少包含2列,且其中1列为时间列。

查询语句(select_statement)

TASK为时序类任务(TIME_SERIES_FORECAST或TIME_SERIES_ANOMALY_DETECTION)时,可以指定查询语句。指定的查询语句的结果必须至少包含2列,且其中1列为时间列。

模型路径(model_file_path | huggingface_repo | modelscope_repo

  • model_file_path:模型上传至LDFS上的地址,格式为ldfs://model_file_path,例如ldfs://x.x.x.x/CLIP-ViT-B-32-IMAGE.zip

  • huggingface_repo:模型平台(HuggingFace)上的模型路径,格式为huggingface://repository_id,例如huggingface://lllyasviel/ControlNet

  • modelscope_repo:模型平台(ModelScope)上的模型路径,格式为modelscope://repository_id,例如modelscope://damo/multi-modal_chinese_stable_diffusion_v1.0

指定目标列(TARGET column_identifer)

用于指定模型分析和处理的目标列。当TASK指定以下任务类型时,TARGET column_identifer必填 。

  • 语义检索(SEMANTIC_RETRIEVAL)

  • 检索问答(RETRIEVAL_QA)

  • 时序预测(TIME_SERIES_FORECAST)

  • 时序异常检测(TIME_SERIES_ANOMALY_DETECTION)

任务类型(TASK)

您可以通过TASK关键字指定任务类型,例如TASK TEXT_TO_IMAGE表示创建文生图模型。

任务类型

关键字

说明

特征提取

FEATURE_EXTRACTION

使用Embedding模型从数据(文本或图像等)中提取特征向量。

文生图

TEXT_TO_IMAGE

文本生成图像类AIGC任务。

语义检索

SEMANTIC_RETRIEVAL

在指定数据表中根据描述文本检索语义相似的文本。

基础问答

QUESTION_ANSWERING

使用大语言模型进行问答。

检索问答

RETRIEVAL_QA

使用指定数据表中的知识库结合大语言模型构建一个检索增强生成(Retrieval Augmented Generation,RAG)应用。

时序预测

TIME_SERIES_FORECAST

时序预测类任务。

时序异常检测

TIME_SERIES_ANOMALY_DETECTION

时序异常检测类任务。

重要

时序类(时序预测和时序异常检测)任务的模型创建完成后,AI引擎会自动对模型进行训练。其他类型任务的模型创建完成后,AI引擎不会对其模型进行训练。

算法(ALGORITHM)

指定模型使用的算法。支持的算法如下表所示:

任务类型

算法

说明

特征提取、语义检索

TEXT2VEC_BASE_CHINESE

  • 中文文本转向量Embedding模型。

  • 对应的模型平台上的路径为huggingface://shibing624/text2vec-base-chinese。详细信息,请参见Hugging Face模型

BGE_LARGE_ZH

  • BAAI(智源)训练的中文文本转向量Embedding模型。

  • 对应的模型平台上的路径为huggingface://BAAI/bge-large-zh-v1.5。详细信息,请参见Hugging Face模型

M3E_BASE

  • MoKaAI训练的中文文本转向量Embedding模型。

  • 对应的模型平台上的路径为huggingface://moka-ai/m3e-base。详细信息,请参见Hugging Face模型

GTE_LARGE_ZH

  • 达摩院训练的中文文本转向量Embedding模型。

  • 对应的模型平台上的路径为huggingface://thenlper/gte-large-zh。详细信息,请参见Hugging Face模型

BGE_M3

  • BAAI(智源)训练的支持多语言的文本转向量Embedding模型。

  • 对应的模型平台上的路径为huggingface://BAAI/bge-m3。详细信息,请参见Hugging Face模型

JINA_V2_BASE_ZH

  • Jina AI训练的支持中英双语的文本转向量Embedding模型。

  • 对应的模型平台上的路径为modelscope://jinaai/jina-embeddings-v2-base-zh。详细信息,请参见Model Scope模型

文生图

CHINESE_STABLE_DIFFUSION

  • 中文Stable Diffusion文生图模型,根据描述文本返回符合文本描述的2D图像。

  • 对应的模型平台上的路径为modelscope://damo/multi-modal_chinese_stable_diffusion_v1.0。详细信息,请参见Model Scope模型

基础问答、检索问答

CHATGLM3_6B

  • 支持中英双语问答的对话语言模型ChatGLM-6B的第三代版本。

  • 对应的模型平台上的路径为huggingface://THUDM/chatglm3-6b。详细信息,请参见Hugging Face模型

CHATGLM2_6B_INT4

  • 支持中英双语问答的对话语言模型ChatGLM-6B的第二代版本INT4量化版。

  • 对应的模型平台上的路径为huggingface://THUDM/chatglm2-6b-int4。详细信息,请参见Hugging Face模型

CHATGLM2_6B

  • 支持中英双语问答的对话语言模型ChatGLM-6B的第二代版本 。

  • 对应的模型平台上的路径为huggingface://THUDM/chatglm2-6b。详细信息,请参见Hugging Face模型

QWEN_7B_CHAT_INT4

  • 阿里云研发的通义千问大模型系列的70亿参数规模的模型INT4量化版 。

  • 对应的模型平台上的路径为modelscope://qwen/Qwen-7B-Chat-Int4。详细信息,请参见Model Scope模型

QWEN_14B_CHAT_INT4

  • 阿里云研发的通义千问大模型系列的140亿参数规模的模型INT4量化版 。

  • 对应的模型平台上的路径为modelscope://qwen/Qwen-14B-Chat-Int4。详细信息,请参见Model Scope模型

时序预测

DeepAR

DeepAR算法是基于RNN的深度神经网络算法。详细信息,请参见DeepAR论文

TFT

TFT(Temporal Fusion Transformer)算法是基于Transformer机制的深度神经网络算法,详细信息,请参见TFT论文

时序异常检测

esd

达摩院自研算法,适用于尖刺型异常(例如监控曲线出现尖刺的现象),对于数据点中有少量显著离群点的情况,检测结果准确。详细信息,请参见时序异常检测

nsigma

达摩院自研算法,原理简单,便于分析异常原因。详细信息,请参见时序异常检测

ttest

达摩院自研算法,适用于识别一个时间窗口内时序指标是否存在因均值变化而发生的异常。详细信息,请参见时序异常检测

指定列的预处理操作(PREPROCESSORS 'string')

PREPROCESSORS为可选关键字,且仅对时序类任务(TIME_SERIES_FORECAST或TIME_SERIES_ANOMALY_DETECTION)生效。

PREPROCESSORS用于指定某些列的预处理操作,通常使用JSON格式的字符串定义。

'string'包括要处理的列集合Columns和需要执行的预处理操作列表Transformers。其中Transformers参数构成一个管道,会按照指定的顺序执行。每一个Transformers都包含预处理操作名称Name和参数Parameters。示例如下:

PREPROCESSORS '[
{
  "Columns":[
    "c1"
  ],
  "Transformers":[
    {
      "Name": "Imputer",
      "Parameters": {"value": 0}
    },
    {
      "Name": "StandardScaler"
    }
  ]
},
{
  "Columns":[
    "c2",
    "c3"
  ],
  "Transformers":[
    {
      "Name": "OrdinalEncoder"
    }
  ]
}
]'
说明

其中,预处理的列集合Columns参数和预处理操作包含的Parameters参数都为可选参数。

在模型训练时指定的预处理操作会被自动应用到模型推理的过程中。目前Lindorm AI支持的预处理操作如下表所示:

预处理操作

参数

说明

OneHotEncoder

使用二进制对类别特征进行编码,适用于没有大小关系的类别特征。

OrdinalEncoder

将类别特征编码从0开始的整数,适用于有大小关系的类别特征。

Imputer

  • method:字符串。取值为dummy、mean、median、most_frequent、roll7、last,默认为dummy。

  • value:整型。可选参数,默认为0。

对缺失值进行插值,可选多种策略。

StandardScaler

将数据转换成标准正态分布(均值为0,标准差为1),也叫z-score标准化。

MinMaxScaler

  • min:整型。

  • max:整型。可选参数。

将数据范围缩放至(min,max)区间,默认缩放至(0,1)。

LogTransformer

将数据转换成log对数值。

配置任务参数(SETTINGS)

您可以通过SETTINGS关键字配置任务参数,例如是否检索主键列、指定时间列等等。具体如下:

  • 语义检索和检索问答任务相关参数

    参数名

    参数类型

    说明

    是否必填

    embedding_model

    VARCHAR

    此参数可用于两个用途:

    • 语义检索任务指定使用BYOM功能导入的Embedding模型,取值为使用BYOM功能导入的Embedding模型名称。

    • 检索问答任务更换Embedding模型,取值为:

      • 使用BYOM功能导入的Embedding模型名。

      • 特征提取任务支持的所有Embedding模型对应的模型平台路径,如huggingface://BAAI/bge-large-zh-v1.5等。

    hybrid_retrieval

    VARCHAR

    是否打开向量+全文混合检索功能(仅对语义检索任务生效),打开后会使用RRF(Reciprocal rank fusion)算法对双路召回结果进行排序。取值如下:

    • on:默认值,打开。

    • off:关闭。

    text_splitter

    VARCHAR

    是否打开文档切片功能。取值如下:

    • on:默认值,打开。

    • off:关闭。

    incremental_train

    VARCHAR

    是否打开增量处理功能。取值如下:

    • on:打开。

    • off:默认值,关闭。

    说明

    使用增量处理功能需要满足以下条件:

    retrievel_algo

    VARCHAR

    向量检索的索引算法。取值如下:

    • HNSW:默认值。采用HNSW图结构构建整个向量索引,并通过该算法进行查询,适合大规模的数据集。

    • FLAT:不单独构建索引,采用暴力搜索的方式执行查询,适合1万条以下的小规模数据集。

    retrieval_distance_method

    VARCHAR

    向量检索的距离函数。取值如下:

    • IP:默认值。向量内积。

    • COSINE:余弦距离。

    • L2:平方欧式距离。

    retrieval_ef_construct

    INTEGER

    使用HNSW向量检索算法构建索引时,动态列表的长度。默认值为400,取值范围为[1,1000],该值越大则ANN查询精度越高,同时性能开销越大。

    retrieval_maximum_degree

    INTEGER

    使用HNSW向量检索算法构建索引时,每一层的最大出边数量。默认值为80,取值范围为[1,100]。该值越大则ANN查询精度越高,同时性能开销越大。

    retrieval_num_shards

    INTEGER

    向量索引使用的分片个数,向量数据和结构化数据进行融合检索时,每个索引表分片会先根据向量的相似查询获取topK数据,再基于合并后的topK数据进行结构化数据过滤。默认值为4。

    text_analyzer

    VARCHAR

    此配置项在混合检索功能(hybrid_retrieval)打开时生效,用于指定全文检索使用的分词器。取值如下:

    • ik:默认值

    • standard

    • english

    • whitespace

    • comma

  • 时序预测任务相关参数

    参数名

    参数类型

    说明

    是否必填

    epochs

    INTEGER

    训练epochs的个数,只适用于时序预测。默认为80。

    time_column

    VARCHAR

    时间列。

    group_columns

    VARCHAR

    分组列。即决定时间线的TAG列。

    freq

    VARCHAR

    时序数据的频率。例如“1D”。

    prediction_length

    INTEGER

    预测步长。

    feat_static_columns

    VARCHAR

    静态特征列(TAG)的集合,以英文逗号(,)分隔。

  • 时序异常检测相关参数

    时序异常检测支持的参数,请参见时序异常检测中的训练参数。

示例

文生图

CREATE MODEL t2i_model
FROM 'modelscope://damo/multi-modal_chinese_stable_diffusion_v1.0'
TASK TEXT_TO_IMAGE
ALGORITHM CHINESE_STABLE_DIFFUSION;

特征提取

CREATE MODEL fe_model
FROM 'huggingface://BAAI/bge-large-zh-v1.5'
TASK FEATURE_EXTRACTION
ALGORITHM BGE_LARGE_ZH;

语义检索

CREATE MODEL sr_model
FROM doc_table
TARGET doc_field
TASK SEMANTIC_RETRIEVAL
ALGORITHM BGE_LARGE_ZH;

基础问答

CREATE MODEL qa_model
FROM 'huggingface://THUDM/chatglm2-6b-int4'
TASK QUESTION_ANSWERING
ALGORITHM CHATGLM2_6B_INT4;

检索问答

CREATE MODEL rqa_model
FROM doc_table
TARGET doc_field
TASK RETRIEVAL_QA
ALGORITHM CHATGLM2_6B_INT4;

时序预测

CREATE MODEL tft_model
FROM (SELECT * FROM fresh_sales WHERE `time` > '2021-02-08T00:00:00+08:00')
TARGET sales
TASK time_series_forecast
ALGORITHM tft
SETTINGS
(
  time_column 'time',
  group_columns 'id_code',
  feat_static_columns 'cate1_id,cate2_id,brand_id',
  context_length '28',
  prediction_length '6',
  epochs '5',
  freq '1D'
);