mindformers.AutoModelForCausalLM

查看源文件
class mindformers.AutoModelForCausalLM[源代码]

这是一个通用的模型类,使用类方法 AutoModelForCausalLM.from_pretrainedAutoModelForCausalLM.from_config 创建时会自动实例化为库中(带有因果语言建模头)的模型类之一。 这个类不能直接使用 __init__() 实例化(会抛出异常)。

classmethod from_config(config, **kwargs)

通过Config实例或者yaml文件实例化一个库中(带有因果语言建模头)的模型类。

警告

这个API正处于实验阶段,在下一个版本中可能会有一些突破性的变化。

说明

通过其配置文件加载模型 不会 载入模型权重。这只影响模型的配置。使用 AutoModel.from_pretrained 以载入模型权重。

参数:
  • config (Union[MindFormerConfig, PretrainedConfig, str]) - MindFormerConfig 实例,yaml文件路径,或者 PretrainedConfig 实例(实验特性)。实例化得到的模型类将基于以下配置类进行选择:

    • ChatGLM2Config 配置类: ChatGLM2Model ( ChatGLM2Model 模型)

    • LlamaConfig 配置类: LlamaModel ( LlamaModel 模型)

  • kwargs (Dict[str, Any], 可选) - 传入的配置信息将会覆盖config中的配置信息。

返回:

一个模型实例。

样例:

>>> from mindformers import AutoConfig, AutoModelForCausalLM
>>> import mindspore as ms
>>> # set mindspore context
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> # Download configuration from openmind and cache.
>>> config = AutoConfig.from_pretrained("llama2_7b")
>>> model = AutoModelForCausalLM.from_config(config)
classmethod from_pretrained(pretrained_model_name_or_dir, *model_args, **kwargs)

从文件夹、或魔乐社区读取配置信息,实例化一个库中(带有因果语言建模头)的模型类。

实例化的模型会基于配置对象(通过参数传入,或在存在的情况下从目录 pretrained_model_name_or_dir 中载入)的 model_type 属性选择模型类别。若配置对象缺失,则会对 pretrained_model_name_or_dir 进行模式匹配:

  • glm2 - ChatGLM2Model ( ChatGLM2Model 模型)

  • llama - LlamaModel ( LlamaModel 模型)

模型会默认调用 model.eval() 以设置为评估模式(例如dropout模块被停用)。要训练模型,您应该首先使用 model.train() 将其设置回训练模式。

警告

这个API正处于实验阶段,在下一个版本中可能会有一些突破性的变化。

参数:
  • pretrained_model_name_or_dir (str) - 包含yaml文件和ckpt文件的文件夹路径、包含config.json文件和对应的权重文件的文件夹路径、或魔乐社区上的model_id。后两者为实验特性。

  • model_args (Any, 可选) - 会在实例化模型时,传给模型的 __init__() 方法。仅在实验特性时生效。

  • kwargs (Dict[str, Any], 可选) - 可用于更新载入的配置对象和实例化模型(例如 output_attentions=True )。 当 config 已通过参数提供或者已自动载入时, **kwargs 会被传入模型的 __init__ 方法;否则 **kwargs 会首先传入 PretrainedConfig.from_pretrained 方法构建一个配置对象,而与配置属性无关的键则会传入模型的 __init__ 方法。

    部分可用的键如下所示:

    • config (PretrainedConfig, 可选): 模型的配置信息,用于替换自动载入的配置。默认值: None 。 在以下情况下会自动载入模型配置:

      • 模型通过预训练模型的model_id从库中载入。

      • 模型由 PreTrainedModel.save_pretrained 方法保存并通过提供保存目录载入。

      • 模型由 pretrained_model_name_or_dir 表示的本地目录载入,目录中包含一个命名为 'config.json' 的配置文件。

    • cache_dir (Union[str, os.PathLike], 可选): 在标准缓存不可用的情况下,一个缓存了下载的预训练模型配置文件的文件夹路径。默认值: None

    • force_download (bool, 可选): 是否强制(重新)下载模型权重和配置文件,这将覆盖掉原本缓存的版本。默认值: False

    • resume_download (bool, 可选): 是否删除未完全接收的文件。将会在此类文件存在时尝试恢复下载。默认值: False

    • proxies (Dict[str, str], 可选): 一个协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'} 。代理会在每一次请求中使用。默认值: None

    • local_files_only (bool, 可选): 是否只查看本地文件(不尝试下载模型)。默认值: False

    • revision (str, 可选): 使用特定的模型版本。可以是一个分支名、标签名、一个提交,或者任何git允许的标识符。默认值: "main"

    • trust_remote_code (bool, 可选): 是否允许在自己的建模文件中对Hub上定义的模型进行自定义。该选项应当仅对你信任且阅读过代码的仓库设置为 True ,因为这会在你的本地机器上执行Hub当前的代码。默认值: False

    • code_revision (str, 可选): 当代码与模型的其他部分位于不同的仓库时,使用Hub上代码的特定修订。可以是一个分支名、标签名、一个提交,或者任何git允许的标识符。默认值: "main"

返回:

一个继承自PretrainedModel类的模型实例。

样例:

>>> from mindformers import AutoConfig, AutoModelForCausalLM
>>> import mindspore as ms
>>> # set mindspore context
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> # Download model and configuration from openmind and cache.
>>> model = AutoModelForCausalLM.from_pretrained("llama2_7b")
>>> # Update configuration during loading
>>> model = AutoModelForCausalLM.from_pretrained("llama2_7b", num_layers=2)
>>> model.config.num_layers
2
classmethod register(config_class, model_class, exist_ok=False)

注册一个新的模型类到此类中。

警告

这个API正处于实验阶段,在下一个版本中可能会有一些突破性的变化。

参数:
  • config_class (PretrainedConfig) - 模型的Config类。

  • model_class (PretrainedModel) - 用于注册的模型类。

  • exist_ok (bool, 可选) - 为True时,即使 config_class 已存在也不会报错。默认值: False