开发喵星球

自定义模型接入

自定义模型接入

介绍

模型供应集成完成后,接下来为模型供应下模型的接入,为了帮助理解整个接入过程,我们以Xinference为例,逐步完成一个完整的模型供应接入。

需要注意的是,对于自定义模型,每一个模型的接入都需要填写一个完整的模型供应凭据。而不同于预定义模型,自定义模型供应接入时永远会拥有如下两个参数,不需要在模型供应 yaml 中定义。

image-20240731110225000

模型模型供应无需实现validate_provider_credential,Runtime会自行根据用户在此选择的模型类型和模型名称调用对应的模型层的validate_credentials来进行验证。

编写模型供应 yaml

我们首先要确定,接入的这个模型供应支持哪些类型的模型。

当前支持模型类型如下:

Xinference支持LLMText EmbeddingRerank,那么我们开始编写xinference.yaml

provider: xinference #确定模型供应标识
label: # 模型供应展示名称,可设置 en_US 英文、zh_Hans 中文两种语言,zh_Hans 不设置将默认使用 en_US。
  en_US: Xorbits Inference
icon_small: # 小图标,可以参考其他模型供应的图标,存储在对应模型供应实现目录下的 _assets 目录,中英文策略同 label
  en_US: icon_s_en.svg
icon_large: # 大图标
  en_US: icon_l_en.svg
help: # 帮助
  title:
    en_US: How to deploy Xinference
    zh_Hans: 如何部署 Xinference
  url:
    en_US: https://github.com/xorbitsai/inference
supported_model_types: # 支持的模型类型,Xinference同时支持LLM/Text Embedding/Rerank
- llm
- text-embedding
- rerank
configurate_methods: # 因为Xinference为本地部署的模型供应,并且没有预定义模型,需要用什么模型需要根据Xinference的文档自己部署,所以这里只支持自定义模型
- customizable-model
provider_credential_schema:
  credential_form_schemas:

随后,我们需要思考在 Xinference 中定义一个模型需要哪些凭据

provider_credential_schema:
  credential_form_schemas:
  - variable: model_type
    type: select
    label:
      en_US: Model type
      zh_Hans: 模型类型
    required: true
    options:
    - value: text-generation
      label:
        en_US: Language Model
        zh_Hans: 语言模型
    - value: embeddings
      label:
        en_US: Text Embedding
    - value: reranking
      label:
        en_US: Rerank
  - variable: model_name
    type: text-input
    label:
      en_US: Model name
      zh_Hans: 模型名称
    required: true
    placeholder:
      zh_Hans: 填写模型名称
      en_US: Input model name
  - variable: server_url
    label:
      zh_Hans: 服务器URL
      en_US: Server url
    type: text-input
    required: true
    placeholder:
      zh_Hans: 在此输入Xinference的服务器地址,如 https://example.com/xxx
      en_US: Enter the url of your Xinference, for example https://example.com/xxx
  - variable: model_uid
    label:
      zh_Hans: 模型 UID
      en_US: Model uid
    type: text-input
    required: true
    placeholder:
      zh_Hans: 在此输入您的 Model UID
      en_US: Enter the model uid

现在,我们就完成了模型供应的基础定义。

编写模型代码

然后我们以llm类型为例,编写xinference.llm.llm.py

llm.py 中创建一个 Xinference LLM 类,我们取名为 XinferenceAILargeLanguageModel(随意),继承 __base.large_language_model.LargeLanguageModel 基类,实现以下几个方法:

   
分类:玩技术 作者:荡荡, 浩浩 发表于:2024-07-31 11:06:18 阅读量:87
<<   >>


powered by kaifamiao