训练自己的ai模型
华为云面向政企客户推出的业界首个大模型混合云,通过将大模型部署在本地云基础设施上,一站式帮助客户打造完整AI生产链,结合行业落地实践经验和端端专业服务赋能千行万业,让每个企业都拥有专属大模型。
支持在线推理、批量推理、边缘推理多形态部署 稳定安全的算力底座,极快至简的模型训练 稳定安全的算力底座,极快至简的模型训练 支持万节点计算集群管理 大规模分布式训练能力,加速大模型研发 多应用场景全覆盖,AI智能平台助力业务成功 多应用场景全覆盖,AI智能平台助力业务成功 大模型 实现智能回答、聊天机器人、自动摘要、机器翻译、文本分类等任务
支持本地或使用其他工具开发的算法上传至ModelArts中统一管理;支持订阅AI Gallery中的算法构建模型 训练管理 支持基于不同的数据,选择不同规格的资源池用于模型训练;支持使用以下三种方式开发模型:订阅算法、自定义算法、自定义镜像 AI应用管理 支持将训练作业中得到的模型、本地开发的模型部
加速视频创作,丰富感官体验,让创意动起来,带你跨越时空的旅行。 展开1 收起1 世界大模型 动态生成可交互、可漫游的数字空间,构建智能驾驶和具身智能机器人训练所需环境。 图像理解 深度解析图像的场景、实体、属性、逻辑等,综合理解图像含义 图像生成 利用大数据和深度学习,将灵感转化为高质量图片,重塑视觉艺术形态
盘古NLP大模型 盘古NLP大模型 优秀的模型结构,完善的工程化能力,最贴合行业落地的NLP大模型 超大参数规模,最贴合行业落地的NLP大模型 重磅发布盘古NLP 718B深度思考模型,多专家+大稀疏比的MOE新架构,昇腾亲和设计,高效训推 专家咨询 ModelArts Studio控制台
丰富多样的AI训练数据集 场景化AI案例,助力AI赋能千行百业 查看全部 学习资源 学习资源 AI开发基本流程介绍 自动学习简介 使用预置算法构建模型 使用自定义算法构建模型 查看全部 即刻领取 免费试用 产品 开启您的大模型之旅 企业免费试用 您可能感兴趣的产品 您可能感兴趣的产品 盘古大模型
该案例是使用华为云一站式AI开发平台ModelArts的新版“自动学习”功能,基于华为云AI开发者社区AI Gallery中的数据集资产,让零AI基础的开发者完成“物体检测”的AI模型的训练和部署。 一键完成商超商品识别模型部署 本教程以“商超商品识别”模型为例,完成从AI Gallery订阅模型,到ModelArts一键部署为在线服务的全流程体验过程。
为什么选择昇腾云 领先的昇腾架构 领先的昇腾架构 昇腾达芬奇架构领先,算力相比友商提升30%+; MindSpore原生支持大模型开发,千亿参数模型调优时间缩短60%。 高效的迁移工具链 高效的迁移工具链 全流程昇腾迁移工具链,典型场景迁移至生产环境<2周; 易用的训练、推理迁移工具,支撑客户自主昇腾迁移。
场景化AI案例,助力AI赋能千行百业 查看全部 学习资源 学习资源 AI开发基本流程介绍 自动学习简介 使用预置算法构建模型 使用自定义算法构建模型 查看全部 即刻领取 免费试用 产品 开启您的大模型之旅 企业免费试用 您可能感兴趣的产品 您可能感兴趣的产品 大模型开发平台ModelArts
提供高性能、高可靠、低时延、低成本的海量存储系统,与华为云的大数据服务组合使用,可大幅降低成本,帮助企业简单便捷的管理大数据 分布式SQL引擎 Fabric提供分布式SQL引擎,实现了元数据服务、计算、缓存和存储的分层解耦和弹性,让每一层动态分配资源而不会影响另一层的性能或可用性。语句级别的
,只需人工提供极少量的标注数据,通过平台的自动标注功能,能够提升50%的标注效率,节省人力及时间成本;3、解决模型训练门槛高问题,可视化的模型训练界面,自动推荐训练参数,5分钟快速上手,模型训练成本降低70%;4、克服算法只能解决单一业务场景问题,通过拖拽的方式将多个模型串联起来
智慧监控AI模型综合集成了人脸识别模型、安全帽识别模型、口罩佩戴识别模型、车牌识别模型、车辆占道识别模型5种AI模型。一,人脸识别服务 人脸识别模型目前提供授权认证、模型加载、人脸注册、人脸识别、人脸删除、特征提取六个接口服务。 授权认证:需先进行授权认证,才能够正常使用人脸识别服务;
《互联网信息服务算法推荐管理规定》明确,具有舆论属性或者社会动员能力的算法推荐服务提供者应当在提供服务之日起十个工作日内通过互联网信息服务算法备案系统填报服务提供者的名称、服务形式、应用领域、算法类型、算法自评估报告、拟公示内容等信息 方便
规划设计:· 提供需求调研服务,基于盘古大模型的能力进行科学合理的方案设计和模型选择。· 完成需求调研报告和方案设计报告的输出及交付。· 提供L0盘古大模型服务部署方案的规划设计及部署实施服务。3. 数据工程:· 涵盖数据采集、清洗、标注、转换与导入的全方位数据服务。· 具备爬虫脚本开发和数据处理经验,确保数据质量。4
移到我们的系统中,确保数据的完整性和安全性。,快速部署:我们有一套完善的部署方案和流程,可以在短时间内快速部署系统,使客户能够更快地开始使用系统。,客户需求定制:我们会根据客户需求定制个性化的系统,确保系统完全符合客户的实际需求和业务流程。 ,售后支持:我们提供全天候的技术支持,
产品利用移动5G通讯,结合AI视觉算法的先进技术,与战训环节深度融合,实现比武考试、体能训练、日常训练等全场景应用 实时查看训练考核数据
等,以及整体的规划设计(需求、思路、方案、架构、落地周期、预算等)。3. 数据的咨询、治理和梳理,数据的采集(各业务系统中的多种业务模型、网络等等),数据的标注,关联关系的定义,以及数据导入。4. 基于具体任务和对应的数据分布,设计适合的微调训练框架和方案;使用不同的调参策略和技
,满足企业在不同地点的工作需求。5、我们保证了业务的高质量数据供给。我们的工作站拥有强大的数据处理能力,可以提供高质量的数据,帮助企业做出更好的决策。总的来说,太杉天尊大模型AIGC场景解决方案具备功能强大、安全可靠、易于使用的特点,是政府的得力助手,企业的重要伙伴。1、数据私有化;
%+,能够为客户提供定制化的解决方案。 公司集成了世界领先的底层大模型,具备打通跨模型和工具链的平台能力,采用最新的人工智能技术和算法,能够基于业务场景,支持大规模数据处理和复杂的模型训练,根据客户的特定需求调整模型参数和功能,确保为客户提供高效、可靠的技术服务,以满足业务目标。
是唯一的,只有运行时的容器能访问到。因此训练作业的“/cache”是安全的。 如何查看训练作业资源占用情况? 在ModelArts管理控制台,选择“训练管理>训练作业”,进入训练作业列表页面。在训练作业列表中,单击目标作业名称,查看该作业的详情。您可以在“资源占用情况”页签查看到如下指标信息。
') 训练作业的“/cache”目录是否安全? ModelArts训练作业的程序运行在容器中,容器挂载的目录地址是唯一的,只有运行时的容器能访问到。因此训练作业的“/cache”是安全的。 训练环境中不同规格资源“/cache”目录的大小 在创建训练作业时可以根据训练作业的大小选择CPU、GPU或者Ascend资源。
器中,容器挂载的目录地址是唯一的,只有运行时的容器能访问到。因此训练作业的“/cache”是安全的。 训练环境中不同规格资源“/cache”目录的大小 在创建训练作业时可以根据训练作业的大小选择CPU、GPU或者Ascend资源。 ModelArts会挂载硬盘至“/cache”目
行业重塑 深厚的行业积累,分层解耦的架构,多样化的部署模式 深厚的行业积累,分层解耦的架构,多样化的部署模式 技术扎根 全栈技术创新,极致算力加速大模型开发,打造世界AI另一极 全栈技术创新,极致算力加速大模型开发,打造世界AI另一极 开放同飞 打造云原生应用平台AppArts,成立大模型高质量数据联盟
架构需要使用到大规模的计算集群(GPU/NPU服务器),集群中的服务器访问的数据来自一个统一的数据源,即一个共享的存储空间。这种共享访问的数据有诸多好处,它可以保证不同服务器上访问数据的一致性,减少不同服务器上分别保留数据带来的数据冗余等。另外以 AI 生态中非常流行的开源深度学习框架Py
数。您还可以基于不同的数据,选择不同规格的资源池用于模型训练。除支持用户自己开发的模型外,ModelArts还提供了从AI Gallery订阅算法,您可以不关注模型开发,直接使用AI Gallery的算法,通过算法参数的调整,得到一个满意的模型。 创建AI应用时,导入ModelArts训练作业中训练完成的模型。
ModelArts提供了模型训练的功能,方便您查看训练情况并不断调整您的模型参数。您还可以基于不同的数据,选择不同规格的资源池用于模型训练。除支持用户自己开发的模型外,ModelArts还提供了从AI Gallery订阅算法,您可以不关注模型开发,直接使用AI Gallery的算法,通过算法参数的调整,得到一个满意的模型。
我们的系统中。比如您之前使用的是gmail企业邮局,您可以用搬家功能把gmail邮局中的邮件全部迁移到我们的系统中。 如果您在使用我们的系统前使用过其他家的邮局系统,您可以用我们的搬家功能,将之前其他家邮局中的邮件迁移到我们的系统中。比如您之前使用的是gmail企业邮局,您可以用
on语言中的正则表达式进行文本信息的匹配、多线程执行任务的实现和Python中类的魔法方法的使用。 基于深度学习算法的语音识别 利用新型的人工智能(深度学习)算法,结合清华大学开源语音数据集THCHS30进行语音识别的实战演练,让使用者在了解语音识别基本的原理与实战的同时,更好的了解人工智能的相关内容与应用。
训练自己的ai模型
AI Gallery的Transformers库支持部分开源的模型结构框架,并对昇腾系列显卡进行了训练/推理性能优化,可以做到开箱即用。如果你有自己从头进行预训练的模型,AI Gallery也支持使用SDK构建自定义模型接入AI Gallery。
Transformers库介绍
AI Gallery使用的Transformers机器学习库是一个开源的基于Transformer模型结构提供的预训练语言库。Transformers库注重易用性,屏蔽了大量AI模型开发使用过程中的技术细节,并制定了统一合理的规范。使用者可以便捷地使用、下载模型。同时支持用户上传自己的预训练模型到在线模型资产仓库中,并发布上架给其他用户使用。AI Gallery在原有Transformers库的基础上,融入了对于昇腾硬件的适配与支持。对AI有使用诉求的企业、NLP领域开发者,可以借助这个库,便捷地使用昇腾算力进行自然语言理解(NLU)和自然语言生成(NLG)任务的SOTA模型开发与应用。
支持的模型结构框架
AI Gallery的Transformers库支持的开源模型结构框架如表1所示。
核心基础类介绍
使用AI Gallery SDK构建自定义模型,需要了解2个核心基础类“PretrainedModel”和“PretrainedConfig”之间的交互。
- “PretrainedConfig”:预训练模型的配置基类
提供模型配置的通用属性和两个主要方法,用于序列化和反序列化配置文件。
PretrainedConfig.from_pretrained(dir) # 从目录中加载序列化对象(本地或者是url),配置文件为dir/config.jsonPretrainedConfig.save_pretrained(dir) # 将配置实例序列化到dir/config.json
- “PretrainedModel”:预训练模型的基类
包含一个配置实例“config”,提供两个主要方法,用来加载和保存预训练模型。
# 1. 调用 init_weights() 来初始化所有模型权重# 2. 从目录中(本地或者是url)中导入序列化的模型# 3. 使用导入的模型权重覆盖所有初始化的权重# 4. 调用 PretrainedConfig.from_pretrained(dir)来将配置设置到self.config中PretrainedModel.from_pretrained(dir)# 将模型实例序列化到 dir/pytorch_model.bin 中PretrainedModel.save_pretrained(dir)# 给定input_ids,生成 output_ids,在循环中调用 PretrainedModel.forward() 来做前向推理PretrainedModel.generate()
操作步骤
本文使用NewBert模型介绍构建自定义模型的流程。
- 安装AI Gallery SDK。
通过pip在本地或云上开发环境安装AI Gallery SDK(galleryformers)。
pip install galleryformers
建议在虚拟环境(Python 3.8+)中安装AI Gallery SDK,以便管理不同的项目,避免依赖项之间产生兼容性问题。
- 构建自定义模型。
- 编写自定义配置类。
模型的configuration包含了构建模型所需的所有信息的对象,需要尽可能完整。
from galleryformers import PretrainedConfigfrom typing import Listclass NewBertConfig(PretrainedConfig): model_type = "bert" def __init__( self, vocab_size=30522, hidden_size=768, num_hidden_layers=12, num_attention_heads=12, intermediate_size=3072, hidden_act="gelu", hidden_dropout_prob=0.1, attention_probs_dropout_prob=0.1, max_position_embeddings=512, type_vocab_size=2, initializer_range=0.02, layer_norm_eps=1e-12, pad_token_id=0, position_embedding_type="absolute", use_cache=True, classifier_dropout=None, **kwargs, ): super().__init__(pad_token_id=pad_token_id, **kwargs) self.vocab_size = vocab_size self.hidden_size = hidden_size self.num_hidden_layers = num_hidden_layers self.num_attention_heads = num_attention_heads self.hidden_act = hidden_act self.intermediate_size = intermediate_size self.hidden_dropout_prob = hidden_dropout_prob self.attention_probs_dropout_prob = attention_probs_dropout_prob self.max_position_embeddings = max_position_embeddings self.type_vocab_size = type_vocab_size self.initializer_range = initializer_range self.layer_norm_eps = layer_norm_eps self.position_embedding_type = position_embedding_type self.use_cache = use_cache self.classifier_dropout = classifier_dropout
- 自定义配置类必须继承自“PretrainedConfig”。
- 自定义配置类的“__init__”必须接受任何“kwargs”,这些“kwargs”需要传递给“__init__”。
- 完成自定义配置类的编写后,可以使用该类创建配置实例。
newbert1_config = NewBertConfig(num_hidden_layers=6, num_attention_heads=10, use_cache=False)newbert1_config.save_pretrained("mynewbert")
这一步会在本地名为mynewbert的文件夹中保存一个名为config.json的文件。
该配置实例同样可以通过调用from_pretrained方法加载。
newbert1_config.from_pretrained("mynewbert")
- 编写完配置部分,开始编写自定义模型。
下面展示了3种模型基类的代码示例,为了确保示例不过于复杂,本文对部分代码片段进行了省略展示。
- 预训练模型基类NewBertPreTrainedModel
from galleryformers import PreTrainedModelfrom .configuration_newbert import NewBertConfigclass NewBertPreTrainedModel(PreTrainedModel): config_class = NewBertConfig load_tf_weights = load_tf_weights_in_bert base_model_prefix = "bert" supports_gradient_checkpointing = True def _init_weights(self, module): """Initialize the weights""" if isinstance(module, nn.Linear): module.weight.data.normal_(mean=0.0, std=self.config.initializer_range) if module.bias is not None: module.bias.data.zero_() elif isinstance(module, nn.Embedding): module.weight.data.normal_(mean=0.0, std=self.config.initializer_range) if module.padding_idx is not None: module.weight.data[module.padding_idx].zero_() elif isinstance(module, nn.LayerNorm): module.bias.data.zero_() module.weight.data.fill_(1.0)
- 基础模型类NewBertModel:该类继承自NewBertPreTrainedModel。
class NewBertModel(NewBertPreTrainedModel): def __init__(self, config, add_pooling_layer=True): super().__init__(config) self.config = config self.embeddings = BertEmbeddings(config) self.encoder = BertEncoder(config) self.pooler = BertPooler(config) if add_pooling_layer else None # Initialize weights and apply final processing self.post_init() def get_input_embeddings(self): return self.embeddings.word_embeddings def set_input_embeddings(self, value): self.embeddings.word_embeddings = value def _prune_heads(self, heads_to_prune): for layer, heads in heads_to_prune.items(): self.encoder.layer[layer].attention.prune_heads(heads) def forward( self, input_ids: Optional[torch.Tensor] = None, attention_mask: Optional[torch.Tensor] = None, token_type_ids: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, head_mask: Optional[torch.Tensor] = None, inputs_embeds: Optional[torch.Tensor] = None, encoder_hidden_states: Optional[torch.Tensor] = None, encoder_attention_mask: Optional[torch.Tensor] = None, past_key_values: Optional[List[torch.FloatTensor]] = None, use_cache: Optional[bool] = None, output_attentions: Optional[bool] = None, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None, ...)
所有的模型都需要通过“forward”方法来实现自己的推理逻辑,这个方法会在执行“model(input_ids)”的时候进行调用
- 模型基类NewBertForXXX:该类承自NewBertPreTrainedModel。
该类可用于执行AI Gallery工具链服务,此处以文本问答(Question Answering)的任务类型为例:
class NewBertForQuestionAnswering(NewBertPreTrainedModel): def __init__(self, config): super().__init__(config) self.num_labels = config.num_labels self.bert = BertModel(config, add_pooling_layer=False) self.qa_outputs = nn.Linear(config.hidden_size, config.num_labels) # Initialize weights and apply final processing self.post_init() def forward( self, input_ids: Optional[torch.Tensor] = None, attention_mask: Optional[torch.Tensor] = None, token_type_ids: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, head_mask: Optional[torch.Tensor] = None, inputs_embeds: Optional[torch.Tensor] = None, start_positions: Optional[torch.Tensor] = None, end_positions: Optional[torch.Tensor] = None, output_attentions: Optional[bool] = None, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None, ) return_dict = return_dict if return_dict is not None else self.config.use_return_dict outputs = self.bert( input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids, position_ids=position_ids, head_mask=head_mask, inputs_embeds=inputs_embeds, output_attentions=output_attentions, output_hidden_states=output_hidden_states, return_dict=return_dict, ) sequence_output = outputs[0] logits = self.qa_outputs(sequence_output) start_logits, end_logits = logits.split(1, dim=-1) start_logits = start_logits.squeeze(-1).contiguous() end_logits = end_logits.squeeze(-1).contiguous() total_loss = None if start_positions is not None and end_positions is not None: # If we are on multi-GPU, split add a dimension if len(start_positions.size()) > 1: start_positions = start_positions.squeeze(-1) if len(end_positions.size()) > 1: end_positions = end_positions.squeeze(-1) # sometimes the start/end positions are outside our model inputs, we ignore these terms ignored_index = start_logits.size(1) start_positions = start_positions.clamp(0, ignored_index) end_positions = end_positions.clamp(0, ignored_index) loss_fct = CrossEntropyLoss(ignore_index=ignored_index) start_loss = loss_fct(start_logits, start_positions) end_loss = loss_fct(end_logits, end_positions) total_loss = (start_loss + end_loss) / 2 if not return_dict: output = (start_logits, end_logits) + outputs[2:] return ((total_loss,) + output) if total_loss is not None else output return QuestionAnsweringModelOutput( loss=total_loss, start_logits=start_logits, end_logits=end_logits, hidden_states=outputs.hidden_states, attentions=outputs.attentions, )
这个多头模型的“forward”函数会先调用“self.bert.forward()”,然后再调用“self.masked_lm_head.__call__()”方法来生成最终的结果。
- 预训练模型基类NewBertPreTrainedModel
- 完成了自定义模型类的编写后,可以使用该类创建一个模型实例:
newbert = NewBertForQuestionAnswering(newbert1_config)
模型权重可以通过调用“.from_pretrained()”加载:newbert.from_pretrained(pretrained_model_name_or_path="./您的权重文件本地存储路径/.")
- 编写自定义配置类。
后续操作
自定义模型文件构建完成后,可以参考托管模型到AI Gallery将模型文件托管至AI Gallery。建议托管的模型文件列表参见表2。
文件名称 |
描述 |
---|---|
config.json |
模型配置文件。 |
model.safetensors或pytorch_model.bin |
预训练模型的权重文件。 |
tokenizer.json |
(可选)预处理器的词表文件,用于初始化Tokenizer。 |
tokenizer_config.json |
(可选)预处理器的配置文件。 |
modeling_xxx.py |
(可选)自定义模型的代码文件,继承自PretrainedModel,包含实现自定义推理逻辑的代码。 |
configuration_xxx.py |
(可选)自定义配置的代码文件,继承自PretrainedConfig,包含实现自定义配置的逻辑代码。 |
训练自己的ai模型常见问题
更多常见问题 >>-
ModelArts模型训练旨在提升开发者模型训练的开发效率及训练性能。提供了可视化作业管理、资源管理、版本管理等功能,基于机器学习算法及强化学习的模型训练自动超参调优;预置和调优常用模型,简化模型开发和全流程训练管理。
-
训练管理模块是ModelArts不可或缺的功能模块,用于创建训练作业、查看训练情况以及管理训练版本。模型训练是一个不断迭代和优化的过程。在训练模块的统一管理下,方便用户试验算法、数据和超参数的各种组合,便于追踪最佳的模型与输入配置,您可以通过不同版本间的评估指标比较,确定最佳训练作业。
-
模型转换,即将开源框架的网络模型(如Caffe、TensorFlow等),通过ATC(Ascend Tensor Compiler)模型转换工具,将其转换成昇腾AI处理器支持的离线模型。
-
本实验指导用户在短时间内,了解和熟悉使用ModelArts进行模型开发和训练的基本流程,并利用ModelArts训练管理服务完成一次训练任务。
-
在自然语言处理(NLP)领域中,使用语言模型预训练方法在多项NLP任务上都获得了不错的提升,广泛受到了各界的关注。本课程将简单介绍一下预训练的思想,几个代表性模型和它们之间的关系。
-
本课程主要介绍如何让TensorFlow脚本运行在昇腾910处理器上,并进行精度、性能等方面的调优。通过对教材的解读,使学员能够结合教材+实践,迁移自己的训练脚本到昇腾平台上进行训练。
更多相关专题
增值电信业务经营许可证:B1.B2-20200593 | 域名注册服务机构许可:黔D3-20230001 | 代理域名注册服务机构:新网、西数