当前位置: 首页 > news >正文

网站开发案例详解 源代码德宏企业网站建设公司

网站开发案例详解 源代码,德宏企业网站建设公司,网片网格,人才招聘网站开发大模型LORA微调总结 大模型微调总结模型加载使用deepspeed不使用deepspeed使用lora加载分词器 数据加载构建source和target构建input_ids和labels标签补齐构建训练器LORA模型推理模型加载多batch推理构建lora微调推理合并模型权重 大模型微调总结 模型加载 使用deepspeed mod… 大模型LORA微调总结 大模型微调总结模型加载使用deepspeed不使用deepspeed使用lora加载分词器 数据加载构建source和target构建input_ids和labels标签补齐构建训练器LORA模型推理模型加载多batch推理构建lora微调推理合并模型权重 大模型微调总结 模型加载 使用deepspeed model transformers.AutoModelForCausalLM.from_pretrained(model_args.model_name_or_path,cache_dirtraining_args.cache_dir,torch_dtypeauto,# if model_args.model_name_or_path.find(falcon) ! -1 else Falsetrust_remote_codeTrue)不使用deepspeed model transformers.AutoModelForCausalLM.from_pretrained(model_args.model_name_or_path,cache_dirtraining_args.cache_dir,device_mapauto,torch_dtypeauto,# if model_args.model_name_or_path.find(falcon) ! -1 else Falsetrust_remote_codeTrue) 使用lora from peft import LoraConfig, get_peft_model LORA_R 32 # LORA_ALPHA 16 LORA_DROPOUT 0.05 TARGET_MODULES [ o_proj,gate_proj, down_proj, up_proj ]config LoraConfig( rLORA_R, # lora_alphaLORA_ALPHA, target_modulesTARGET_MODULES, lora_dropoutLORA_DROPOUT, biasnone, task_typeCAUSAL_LM, #加载配置 model get_peft_model(model, config) #打印训练参数比例 model.print_trainable_parameters()加载分词器 tokenizer transformers.AutoTokenizer.from_pretrained(model_args.model_name_or_path, trust_remote_codeTrue)数据加载 通过Hugging Face的dateset库进行加载数据 使用dateset可以轻松加载数据样例如下所示 from datasets import load_dataset dataset load_dataset(csv, data_filesmy_file.csv) dataset load_dataset(csv, data_files[my_file_1.csv, my_file_2.csv, my_file_3.csv]) dataset load_dataset(csv, data_files{train:[my_train_file_1.csv,my_train_file_2.csv],test: my_test_file.csv})我们可以按下面方式加载数据 def load_dataset_from_own(data_path: Optional[str] None,cache_dir: Optional[str] cache_data) - Dataset:all_file_list [a.json,b.json,c.json]data_files {train: all_file_list}extension all_file_list[0].split(.)[-1]datasets load_dataset(extension,data_filesdata_files,cache_dircache_dir,)[train]return datasets构建source和target 构建prompt PROMPT_DICT {prompt_input: (Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response:),prompt_no_input: (Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Response:), }根据prompt构建source sources [prompt_input.format_map({instruction: ins_data[i], input: input_data[i]}) if input_data[i] ! else prompt_no_input.format_map({instruction: ins_data[i]})for i in range(len_)] #限制长度 sources [i[:data_args.source_length] for i in sources]根据prompt构建targets targets [f{example[:data_args.target_length-1]}{tokenizer.eos_token} for example in output]构建input_ids和labels 输入需要构建的text,输出构建好的ids def _tokenize_fn(strings: Sequence[str], tokenizer: transformers.PreTrainedTokenizer) - Dict:Tokenize a list of strings.tokenized_list [tokenizer(text,return_tensorspt,paddinglongest,max_lengthtokenizer.model_max_length,truncationTrue,)for text in strings]#获得idsinput_ids labels [tokenized.input_ids[0]for tokenized in tokenized_list]#终止符设置ne_pad_token_id IGNORE_INDEX if tokenizer.pad_token_id is None else tokenizer.pad_token_id#统计长度input_ids_lens labels_lens [tokenized.input_ids.ne(ne_pad_token_id).sum().item() for tokenized in tokenized_list]return dict(input_idsinput_ids,labelslabels,input_ids_lensinput_ids_lens,labels_lenslabels_lens,)构建input_ids 和label examples [s t for s, t in zip(sources, targets)] #问题答案、问题 examples_tokenized, sources_tokenized [_tokenize_fn(strings, tokenizer) for strings in (examples, sources)] input_ids examples_tokenized[input_ids] labels copy.deepcopy(input_ids) #构建labels for label, source_len in zip(labels, sources_tokenized[input_ids_lens]):label[:source_len] IGNORE_INDEX标签补齐 在动态batching中我们需要一个data collator完成padding。这里不适用DataCollatorWithPadding来进行补齐操作因为这个函数仅对输入的键包括input_ids, attention_mask, token_type_ids进行补齐不会对labels进行补齐操作。还有在对labels进行补齐操作时使用的是-100而不是分词器的pad_token这么做到的目的是在计算损失函数的时候忽略掉这些padding token。 data_collator DataCollatorForSeq2Seq(tokenizertokenizer, modelmodel, label_pad_token_idIGNORE_INDEX)构建训练器 from transformers import DataCollatorForSeq2Seq, Trainer trainer Trainer(modelmodel,tokenizertokenizer,argstraining_args,train_datasettrain_dataset,eval_datasetNone,data_collatordata_collator) trainer.train() trainer.save_state() trainer.save_model(output_dirtraining_args.output_dir)LORA模型推理 模型加载 base_model_name_or_path internlm-7b lora_model_name_or_path checkpoint-9695model AutoModelForCausalLM.from_pretrained(base_model_name_or_path,torch_dtypeauto,# device_mapauto,# if model_args.model_name_or_path.find(falcon) ! -1 else Falsetrust_remote_codeTrue, ).cuda(0)model PeftModel.from_pretrained(model, model_idlora_model_name_or_path) model.eval() print(ok)tokenizer AutoTokenizer.from_pretrained(base_model_name_or_path, trust_remote_codeTrue, padding_sideleft )多batch推理构建 def batch_generate_data(text_input: List[str], use_train_model: bool True, temp: float 0.7 ):text_input_format [generate_input(i) for i in text_input]batch_inputs tokenizer.batch_encode_plus(text_input_format, paddinglongest, return_tensorspt)batch_inputs[input_ids] batch_inputs[input_ids].cuda()batch_inputs[attention_mask] batch_inputs[attention_mask].cuda()if use_train_model:# with model.disable_adapter():outputs model.generate(**batch_inputs,max_new_tokens256,do_sampleTrue,temperaturetemp,top_p0.8,)else:with model.disable_adapter():outputs model.generate(**batch_inputs,max_new_tokens256,do_sampleTrue,temperaturetemp,top_p0.8,)outputs tokenizer.batch_decode(outputs.cpu()[:, batch_inputs[input_ids].shape[-1] :],skip_special_tokensTrue,)return outputslora微调推理 text_input [工作压力太大怎么办\n] * 32 # lora 训练结果 batch_generate_data(text_input, use_train_modelTrue, temp0.8) # 原来的模型 batch_generate_data(text_input, use_train_modelFalse, temp0.8)合并模型权重 model model.merge_and_unload() model.save_pretrained(internlm-7b-lml) tokenizer.save_pretrained(internlm-7b-lml)
http://www.zqtcl.cn/news/429323/

相关文章:

  • 效果好的徐州网站建设LAMP环境wordpress放在哪里
  • 考试类网站如何做什么是网络营销?有何特点
  • 网站制作公司哪家好wordpress插件怎么汉化
  • 南阳东莞网站建设公司网页升级访问狼在线观看
  • 备案的网站每年都要备案么东平县建设局网站
  • 做网站必须得ipc手机网站制作方法
  • 山东省建设监理协会网站打不开移动互联网开发实践
  • 南宁微网站制作需要多少钱小米商城网站开发文档
  • 制作销售网站有哪些如何制作个人网页设计
  • 新网站做内链智能网站推广软件
  • 西宁市住房和城乡建设局网站广州站是指哪个站
  • 帮建网站网页设计师考试内容
  • seo网站开发txt 发布 wordpress
  • 资讯门户类网站模板定制系统开发公司
  • 让网站快速收录初中毕业如何提升学历
  • 石家庄做网站价格seo优化效果
  • 为什么浏览器打开是2345网址导航seo免费资源大全
  • 网站工程是干啥的动态个人网页制作html教程
  • 阿里云多网站建设wordpress 统计分析
  • 长沙网站定制公司科技特长生
  • 查公司的口碑和评价的网站中学生怎么做网站
  • 做网站买空间多少钱深圳seo优化公司
  • 中国建设银行北京市互联网网站wordpress商城购物表单
  • 万网网站备案管理查询工程建设项目的网站
  • 网站建设国内外研究现状模板ppt设计大赛
  • 专业网站优化方案网站设计过程怎么写
  • 福州定制网站建设网站ip过万
  • wordpress网站评论插件厦门软件网站建设
  • 网站黄金比例wordpress转typecho
  • 重庆有哪些网络公司百度系优化