H20无人驾驶AI,无法加载自定义配方



我使用的是H2O DAI 1.9.0.6。我正在字符串加载自定义配方(使用自定义配方的BERT预训练模型)专家设置。我正在使用本地文件进行上传。但是,上传不起作用。没有错误,就没有进步。在那次活动之后,我无法在RECIPE选项卡下看到这个模型。

从下面的URL中提取了样品配方,并根据我的需要进行了修改。感谢创造这个食谱的人。

https://github.com/h2oai/driverlessai-recipes/blob/master/models/nlp/portuguese_bert.py

自定义配方

导入操作系统进口百叶窗从urlib.parse导入urlparse导入请求从h2oaicore.models导入TextBERTModel,CustomModel从h2oaicore.systemutils导入make_experiment_logger、temporary_file_path、atomic_move、logginfodef is_url(url):尝试:result=urlparse(url)return all([result.scheme,result.netloc,result.path])除了:return Falsedef maybe_download_language_model(logger,save_ directory,model_ link,config_ link,vocab_link):model_name="pytorch_model.bin"如果isistance(model_link,str):model_name=model_link.split('/')[-1]如果".bin"不在model_name中:model_name="pytorch_model.bin"下载(url=config_link,dest=os.path.join(save_directory,"config.json"),logger=记录器)下载(url=vocb_link,dest=os.path.join(保存目录,"vocab.txt"),logger=记录器)下载(url=model_link,dest=os.path.join(save_directory,model_name),logger=记录器)def maybe_download(url,dest,logger=无):如果不是is_url(url):logginfo(logger,f"{url}不是有效的url。")回来dest_tmp=dest+".tmp"如果os.path.exists(dest):logginfo(logger,f"已下载{url}->{dest}")回来如果os.path.存在(dest_tmp):logginfo(logger,f)下载已开始{url}->{dest_tmp}f"删除{dest_tmp}以再次下载该文件。")回来logginfo(logger,f"正在下载{url}->{dest}")url_data=requests.get(url,stream=True)如果url_data.status_code!=requests.codes.ok:msg="无法获取url%s,代码:%s,原因:%s"%(str(url),str(url_data.status_code),str(url_data.reson))引发请求。异常。RequestException(msg)url_data.raw.decode_content=真如果不是os.path.isdir(os.path.dirname(dest)):os.makedirs(os.path.dirname(dest),exist_ok=True)open(dest_tmp,'wb')为f:shutil.copyfileobj(url_data.raw,f)atomic_move(dest_tmp,dest)def check_correct_name(自定义名称):allowed_pretrained_models=['bert','openai gpt','gpt2','transfo-xl','xlnet','xlm-roberta',"xlm"、"roberta"、"distilbert"、"camembert"、"ctrl"、"albert"]assert len([model_name表示allowed_pretrained_models中的model_name如果custom_name]中的model_name),则f"{custom_name}需要包含名称"\"预训练的模型体系结构(例如bert或xlnet)"\"以便能够正确处理模型。"类CustomBertModel(TextBERTModel,CustomModel):""用于使用预训练的变压器模型的自定义模型类。该类继承:-CustomModel实际上只是一个标签。它在那里是为了确保DAI知道它是一个自定义模型。-TextBERTModel,以便自定义模型继承所有属性和方法。支持的模型体系结构:"bert","openai gpt","gpt2","transfo-xl","xlnet","xlm-roberta","xlm"、"roberta"、"distilbert"、"camembert"、"ctrl"、"albert"如何使用:-您已经下载了权重、vocab和配置文件:-将_model_path设置为存储权重、vocb和配置文件的文件夹。-根据预先训练的体系结构设置_model_name(例如,bert base uncased)。-您想要下载权重、vocb和配置文件:-相应地设置_model_link、_config_link和_vocab_link。-_model_path是保存权重、vocb和配置文件的文件夹。-根据预先训练的体系结构设置_model_name(例如,bert base uncased)。-重要信息:_model_path需要包含预先训练的模型体系结构的名称(例如bert或xlnet)以便能够正确地加载模型。-在专家设置中禁用遗传算法。""#_model_path是保存权重、vocb和配置的目录的完整路径。_model_name=NotImplemented#将用于创建MOJO_model_path=未实现_model_link=未实现_config_link=未实现_vocab_link=未实现_booster_str="pytorch自定义"#MOJO创建要求:#_model_name需要是#基于bert的无上限,基于bert的多语言有上限,基于xlnet有上限,以roberta为基础,以distilbert为基础无上限#vocab.txt需要与_model_name中使用的vocab.txt相同(还没有自定义词汇表)。_mojo=错误@静态法def is_enabled():return False#抽象基础模型不应出现在模型中。def_set_model_name(self,language_detected):self.model_path=self__类别___型号路径self.model_name=self__类别___型号名称check_correct_name(self.model_path)check_correct_name(self.model_name)def-fit(self,X,y,sample_weight=无,eval_set=无,sample_wweight_eval_set=无,**kwargs):logger=无如果self.text和self.text.experiment_id:logger=make_experiment_logger(experiment_id=self.text.experiment_id,tmp_dir=self.TEXT.tmp_dir,experity_tmp_dir=self.context.reexperity_tmp_dir)可以是_ download_,save_directory=self__类别___model_ path,model_link=self__类别___model_ link,config_link=self__类别___config_ link,vocab_link=自我__类别___vocab_link)super().fit(X,y,sample_weight,eval_set,sample_wweight_eval_set,**kwargs)类GermanBetModel(CustomBertModel):_model_name="bert base德语dbmdz uncased"_model_path=os.path.join(临时文件路径,"german_bert_language_model/")_model_link="https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/pytorch_model.bin"_config_link="https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/config.json"_vocab_link="https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/vocab.txt"_mojo=真@静态法def is_enabled():return True

检查您的自定义配方是否有返回Trueis_enabled()

def is_enabled():
return True

相关内容

  • 没有找到相关文章

最新更新