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

建站网站模板风雨同舟网站建设

建站网站模板,风雨同舟网站建设,装修设计公司网站有哪些,网站建设的标语概述 大型语言模型#xff08;LLM#xff0c;Large Language Model#xff09;的微调#xff08;Fine-tuning#xff09;是指在一个预训练模型的基础上#xff0c;使用特定领域或任务的数据对模型进行进一步训练#xff0c;以使其在该领域或任务上表现更好。微调是迁移…概述 大型语言模型LLMLarge Language Model的微调Fine-tuning是指在一个预训练模型的基础上使用特定领域或任务的数据对模型进行进一步训练以使其在该领域或任务上表现更好。微调是迁移学习的一种常见方法能够显著提升模型在特定任务上的性能。在大型语言模型LLM的微调中有几种常见的方法包括 SFT监督微调、LoRA低秩适应、P-tuning v2 和 **Freeze 1.大语言模型微调 1.1 微调的工作原理 微调Fine-tuning是指在预训练模型的基础上使用特定任务的标注数据对模型进行进一步训练使其在该任务上表现更好。微调的核心思想是利用预训练模型已经学习到的通用语言表示通过少量任务数据调整模型参数使其适应特定任务。 微调的关键组件 输入 (X) 提供给模型的文本数据例如电影评论、问题、对话等。对于文本生成任务输入可能是一个问题或提示。 目标 (Y) 基于标注数据的预期输出例如情绪标签、聊天机器人响应、摘要文本等。对于分类任务目标可能是类别标签如“积极”或“消极”。对于生成任务目标可能是完整的文本响应。 损失函数 衡量模型的预测与目标之间的差异。通过优化损失函数模型逐渐调整参数以更好地拟合任务数据。 示例IMDB 情绪分类 输入 (X)电影评论例如“这部电影的视觉效果很棒但情节很弱。”目标 (Y)情绪标签例如“积极”或“消极”。模型任务根据输入文本预测正确的情绪标签。 示例文本生成 输入 (X)问题例如“什么是人工智能”目标 (Y)生成的响应例如“人工智能是模拟人类智能的技术。”模型任务根据输入问题生成正确的文本响应。 1.2 使用的损失函数交叉熵损失 在语言模型的微调中交叉熵损失Cross-Entropy Loss 是最常用的损失函数。它用于衡量模型预测的概率分布与真实目标分布之间的差异。 交叉熵损失的公式 对于语言模型交叉熵损失的公式为 Cross-Entropy Loss − ∑ i 1 N y i log ⁡ ( p i ) \text{Cross-Entropy Loss} -\sum_{i1}^{N} y_i \log(p_i) Cross-Entropy Loss−i1∑N​yi​log(pi​) 其中 y i y_i yi​目标分布真实标签的 one-hot 编码。 p i p_i pi​模型预测的概率分布。 N N N词汇表的大小对于分类任务( N ) 是类别数。 交叉熵损失的作用 衡量预测与目标的差异 当模型预测的概率分布与目标分布越接近时交叉熵损失越小。当模型预测的概率分布与目标分布差异较大时交叉熵损失越大。 优化目标 在训练过程中通过反向传播和梯度下降模型不断调整参数以最小化交叉熵损失。 示例文本生成中的交叉熵损失 假设模型生成一个句子每个词的概率分布如下 目标词[I, love, AI]模型预测的概率分布 I: 0.9love: 0.8AI: 0.7 交叉熵损失计算如下 t e x t L o s s − ( log ⁡ ( 0.9 ) log ⁡ ( 0.8 ) log ⁡ ( 0.7 ) ) text{Loss} -(\log(0.9) \log(0.8) \log(0.7)) textLoss−(log(0.9)log(0.8)log(0.7)) 通过最小化损失模型逐渐学会生成更准确的文本。 1.3 SFT监督微调Supervised Fine-Tuning SFT 是最常见的微调方法通过在特定任务的标注数据上对预训练模型进行全参数微调。 特点 全参数微调更新模型的所有参数。适合场景任务数据量较大计算资源充足。优点模型可以完全适应任务。缺点计算成本高显存占用大。 实现代码 from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments from datasets import load_dataset# 加载预训练模型和分词器 model_name bert-base-uncased tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name, num_labels2)# 加载数据集 dataset load_dataset(imdb)# 数据预处理 def preprocess_function(examples):return tokenizer(examples[text], truncationTrue, paddingmax_length, max_length512)tokenized_datasets dataset.map(preprocess_function, batchedTrue)# 设置训练参数 training_args TrainingArguments(output_dir./sft_results,evaluation_strategyepoch,learning_rate2e-5,per_device_train_batch_size8,per_device_eval_batch_size8,num_train_epochs3,weight_decay0.01,save_strategyepoch,logging_dir./logs, )# 定义 Trainer trainer Trainer(modelmodel,argstraining_args,train_datasettokenized_datasets[train],eval_datasettokenized_datasets[test],tokenizertokenizer, )# 开始微调 trainer.train()# 保存模型 model.save_pretrained(./sft-fine-tuned-model) tokenizer.save_pretrained(./sft-fine-tuned-model)1.4 LoRA低秩适应Low-Rank Adaptation) LoRA 是一种高效的微调方法通过低秩分解的方式微调模型参数减少计算量和显存占用。 特点 低秩分解只微调模型的一部分参数低秩矩阵。适合场景资源有限但仍需高效微调。优点参数效率高显存占用低。缺点需要额外的实现支持。 实现代码 使用 peft 库实现 LoRA pip install peftfrom transformers import AutoTokenizer, AutoModelForSequenceClassification from peft import get_peft_model, LoraConfig, TaskType from datasets import load_dataset# 加载预训练模型和分词器 model_name bert-base-uncased tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name, num_labels2)# 配置 LoRA lora_config LoraConfig(task_typeTaskType.SEQ_CLS, # 任务类型r8, # 低秩矩阵的秩lora_alpha32, # 缩放因子lora_dropout0.1, # Dropout 概率 )# 应用 LoRA model get_peft_model(model, lora_config)# 加载数据集 dataset load_dataset(imdb)# 数据预处理 def preprocess_function(examples):return tokenizer(examples[text], truncationTrue, paddingmax_length, max_length512)tokenized_datasets dataset.map(preprocess_function, batchedTrue)# 设置训练参数 training_args TrainingArguments(output_dir./lora_results,evaluation_strategyepoch,learning_rate2e-5,per_device_train_batch_size8,per_device_eval_batch_size8,num_train_epochs3,weight_decay0.01,save_strategyepoch,logging_dir./logs, )# 定义 Trainer trainer Trainer(modelmodel,argstraining_args,train_datasettokenized_datasets[train],eval_datasettokenized_datasets[test],tokenizertokenizer, )# 开始微调 trainer.train()# 保存模型 model.save_pretrained(./lora-fine-tuned-model)1.5 P-tuning v2 P-tuning v2 是一种提示微调方法通过优化提示Prompt来引导模型完成任务而不改变模型参数。 特点 提示优化通过可学习的提示向量引导模型。适合场景少样本学习资源有限。优点无需修改模型参数显存占用低。缺点需要设计提示模板。 实现代码 使用 openprompt 库实现 P-tuning v2 pip install openpromptfrom openprompt import PromptDataLoader, PromptForClassification from openprompt.plms import load_plm from openprompt.prompts import ManualTemplate from openprompt.prompts import ManualVerbalizer from datasets import load_dataset# 加载预训练模型 plm, tokenizer, model_config, WrapperClass load_plm(bert, bert-base-uncased)# 加载数据集 dataset load_dataset(imdb)# 定义提示模板 template ManualTemplate(text{placeholder:text_a} It was {mask},tokenizertokenizer, )# 定义标签词映射 verbalizer ManualVerbalizer(classes[negative, positive],label_words{negative: [bad],positive: [good],},tokenizertokenizer, )# 定义 Prompt 模型 prompt_model PromptForClassification(plmplm,templatetemplate,verbalizerverbalizer, )# 数据加载器 dataloader PromptDataLoader(datasetdataset[train],tokenizertokenizer,templatetemplate,max_seq_length512, )# 训练伪代码需补充优化器和训练循环 for batch in dataloader:logits prompt_model(batch)# 计算损失并更新模型1.6 Freeze 微调 Freeze 微调是指冻结模型的大部分参数只微调部分层如分类头。 特点 参数冻结只微调模型的最后几层。适合场景资源有限任务数据量较小。优点计算成本低显存占用少。缺点模型适应能力有限。 实现代码 from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments from datasets import load_dataset# 加载预训练模型和分词器 model_name bert-base-uncased tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForSequenceClassification.from_pretrained(model_name, num_labels2)# 冻结模型的大部分参数 for param in model.bert.parameters():param.requires_grad False# 加载数据集 dataset load_dataset(imdb)# 数据预处理 def preprocess_function(examples):return tokenizer(examples[text], truncationTrue, paddingmax_length, max_length512)tokenized_datasets dataset.map(preprocess_function, batchedTrue)# 设置训练参数 training_args TrainingArguments(output_dir./freeze_results,evaluation_strategyepoch,learning_rate2e-5,per_device_train_batch_size8,per_device_eval_batch_size8,num_train_epochs3,weight_decay0.01,save_strategyepoch,logging_dir./logs, )# 定义 Trainer trainer Trainer(modelmodel,argstraining_args,train_datasettokenized_datasets[train],eval_datasettokenized_datasets[test],tokenizertokenizer, )# 开始微调 trainer.train()# 保存模型 model.save_pretrained(./freeze-fine-tuned-model) tokenizer.save_pretrained(./freeze-fine-tuned-model)1.7 总结 方法特点适用场景优点缺点SFT全参数微调数据量大资源充足完全适应任务计算成本高LoRA低秩分解部分参数微调资源有限参数效率高显存占用低需要额外实现P-tuning提示优化不修改模型参数少样本学习显存占用低需要设计提示模板Freeze冻结大部分参数微调部分层资源有限数据量小计算成本低模型适应能力有限 2.DeepSeek微调 DeepSeek LLM 是一个强大的开源语言模型但为了最大限度地发挥其在特定应用中的潜力微调是必不可少的。 2.1 使用数据子集 在资源有限的硬件上微调像 DeepSeek LLM 这样的大型语言模型时在完整数据集例如具有 25,000 个样本的 IMDB上进行训练可能会导致过多的训练时间和 GPU 内存问题。 选择一个子集500 个样本用于训练100 个样本用于评估。保持代表性该子集保留了足够的多样性以实现合理的性能。 使用较小的数据集可以加快实验速度同时有效地展示微调概念。对于生产级微调应在更强大的基础设施上使用更大的数据集。 2.2 安装所需的库 首先安装必要的依赖项 pip install -U torch transformers datasets accelerate peft bitsandbytes2.3 使用 4 位量化加载模型 使用 4 位量化使大型模型与有限的 GPU 内存兼容 from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import LoraConfig, get_peft_modelmodel_name deepseek-ai/deepseek-llm-7b-base # Configure 4-bit quantization bnb_config BitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_compute_dtypetorch.float16 # Use float16 for faster computation ) # Load tokenizer and model tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, quantization_configbnb_config, device_mapauto ) # Apply LoRA for memory-efficient fine-tuning lora_config LoraConfig(r8, # Low-rank adaptation sizelora_alpha32,target_modules[q_proj, v_proj], # Apply LoRA to attention layerslora_dropout0.05,biasnone ) model get_peft_model(model, lora_config) model.print_trainable_parameters() print( DeepSeek LLM Loaded with LoRA and 4-bit Precision!)2.4 使用 Hugging Face 数据集进行训练 为了进行微调需要一个高质量的数据集。 Hugging Face 提供对各种数据集的访问 选择数据集 对于此示例让我们使用 IMDB 数据集对 DeepSeek LLM 进行情绪分类微调 from datasets import load_dataset# Load dataset dataset load_dataset(imdb)预处理数据集 将文本转换为模型的标记化输入 def tokenize_function(examples):inputs tokenizer(examples[text], truncationTrue, paddingmax_length, max_length512)inputs[labels] inputs[input_ids].copy()return inputstokenized_datasets dataset.map(tokenize_function, batchedTrue) # Subset the dataset for faster experimentation small_train_dataset tokenized_datasets[train].shuffle(seed42).select(range(500)) small_test_dataset tokenized_datasets[test].shuffle(seed42).select(range(100)) # Print a sample tokenized entry print(Tokenized Sample:) print(small_train_dataset[0])3.LoRA低秩自适应 LoRA低秩自适应是一种旨在通过以下方式使 DeepSeek LLM 等大型模型的微调更加节省内存的技术 冻结模型的大部分权重。在关键层例如注意层中引入低秩可训练矩阵。 这大大减少了可训练参数的数量同时保持了模型的性能。LoRA 可以在资源受限的硬件例如 Colab GPU上微调大型语言模型。 #4.代码演练微调 DeepSeek LLM 首先设置训练参数 from transformers import TrainingArguments, Trainertraining_args TrainingArguments(output_dir./results,evaluation_strategyepoch,learning_rate3e-4, # Lower learning rate for LoRA fine-tuningper_device_train_batch_size1, # Reduce batch size for memory efficiencygradient_accumulation_steps8, # Simulate larger batch sizenum_train_epochs0.5,weight_decay0.01,save_strategyepoch,logging_dir./logs,logging_steps50,fp16True, # Mixed precision training )初始化训练器 trainer Trainer(modelmodel,argstraining_args,train_datasetsmall_train_dataset,eval_datasetsmall_test_dataset, ) print( Trainer Initialized!)开始微调 print( Starting Fine-Tuning...) trainer.train()保存微调模型 trainer.save_model(./fine_tuned_deepseek) tokenizer.save_pretrained(./fine_tuned_deepseek) print(Fine-Tuned Model Saved Successfully!)
http://www.hkea.cn/news/14491722/

相关文章:

  • 网站建设与开发专业网站建设公司华网天下买赠两年建设公司
  • 网站建设调研报告哪里有做网站系统的
  • wordpress英文仿站焦作维科网站建设公司
  • 建立网站如何盈利wordpress后台加速
  • 基本的网站建设步骤做网站定金要多少
  • 公司做网站百度还是阿里公司要建个网站
  • 周口哪里有做网站的做网站开发挣钱吗
  • akm建站系统长沙网站设计优刻
  • 手机端网站设计模板快速建站工具
  • 一个网站如何优化wordpress做的社交
  • 国内高清视频素材网站推荐平顶山做网站
  • 一般做外贸上什么网站好中国建设银行官方网站沈阳
  • 建设银行的官方网站高铁纪念币服务好的高端网站建设报价
  • 南通企业网站排名关于苏宁易购网站建设的不足之处
  • 空间租用 网站开发做网站赚广告
  • 大连网站建设个人网址推广
  • 关于网站建设的意义动易网站 sql2005
  • 视频上传网站如何做做ui要上那些网站
  • 山西建站便宜网站建设seo优化价格
  • 域名查询权威网站中国企业500强江阴有几家
  • 宜昌网站建设宜昌手机网站分类菜单
  • 3小时百度收录新站方法企业文化经典句子
  • 郑州小程序网站开发做网站的公司叫中什么
  • 重庆网站制作那家好网站首页没排名但内页有排名
  • 网站用微信登录 要怎么做民治做网站的公司
  • 大前端最新网站手机免费网站建设
  • 免费找图片素材的网站建立网站需要哪些手续
  • 部分网站打不开的原因wordpress 微服务
  • 金华北京网站建设微网站建设公司哪家好
  • 外贸网站推广建站百度seo排名教程