模型创建

Lindorm AI引擎支持导入预训练AI模型,对数据库内的数据进行分析和处理或对时序数据进行建模,执行时序分析类任务。

语法

CREATE MODEL model_name 
FROM {table_name | (select_statement) | model_file_path | huggingface_repo | modelscope_repo}
[ TARGET column_name ]
TASK ( FEATURE_EXTRACTION | SEMANTIC_RETRIEVAL | TEXT_TO_IMAGE | ... )
ALGORITHM ( BGE_LARGE_ZH | CHATGLM2_6B | CHINESE_STABLE_DIFFUSION | ... )
[ PREPROCESSORS 'string' ]
SETTINGS (
    text_splitter 'off',
    ...
)

参数说明

任务类型(TASK)不同,相关参数配置也不同。请根据任务类型(TASK),配置对应参数。

  • model_name:模型名称。

  • FROM:用于指定导入的模型地址、数据库中的表(检索类任务)、训练数据或一条查询语句(时序类任务),支持以下选项:

    选项

    说明

    table_name

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

    select_statement

    TASK为检索类任务(SEMANTIC_RETRIEVAL或RETRIEVAL_QA)时,用于指定参与检索的文档表中的数据。

    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_name:用于指定模型分析和处理的目标列。当TASK为以下任务类型时,TARGET参数为必选 。

    • 语义检索(SEMANTIC_RETRIEVAL)

    • 检索问答(RETRIEVAL_QA)

    • 时序预测(TIME_SERIES_FORECAST)

    • 时序异常检测(TIME_SERIES_ANOMALY_DETECTION)

  • TASK:指定模型的任务类型,支持以下任务类型:

    任务类型

    关键字

    说明

    特征提取

    FEATURE_EXTRACTION

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

    文生图

    TEXT_TO_IMAGE

    文本生成图像类AIGC任务。

    语义检索

    SEMANTIC_RETRIEVAL

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

    基础问答

    QUESTION_ANSWERING

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

    检索问答

    RETRIEVAL_QA

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

    时序预测

    TIME_SERIES_FORECAST

    时序预测类任务。

    时序异常检测

    TIME_SERIES_ANOMALY_DETECTION

    时序异常检测类任务。

  • 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':可选参数。仅对时序类任务(TIME_SERIES_FORECAST或TIME_SERIES_ANOMALY_DETECTION)生效。用于指定某些列的预处理操作,通常使用JSON格式的字符串定义。

    PREPROCESSORS参数包括要处理的列集合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:指定其他相关参数。不同的任务类型可以指定不同的参数,支持的参数如下:

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

      参数名

      参数类型

      说明

      是否必填

      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'
);