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

成都网站建设及推广图像处理与网站开发

成都网站建设及推广,图像处理与网站开发,中山做网站服务好,html网页设计作业成品免费目录 写这篇文章的目的 1.准备训练所需的文件 2.将压缩包上传到谷歌云盘 使用colab 3.训练 写这篇文章的目的 这篇文章是对:大模型学习-在colab中训练并更换模型_colab调整模型-CSDN博客的一个优化,因为在之前的博文中,我是提供了一个现…

目录

写这篇文章的目的

1.准备训练所需的文件

2.将压缩包上传到谷歌云盘

使用colab

3.训练


写这篇文章的目的

这篇文章是对:大模型学习-在colab中训练并更换模型_colab调整模型-CSDN博客的一个优化,因为在之前的博文中,我是提供了一个现成的文件夹demo,然后基于这个文件夹进行修改完成的大模型的更换和训练。

那如果我不提供文件夹demo呢?好像就没办法进行下去了。所以我决定从文件准备阶段开始,重新过一遍流程。这样以后训练大模型就不用依赖现成的demo了,自己就可以构建训练所需的文件,然后训练。

1.准备训练所需的文件

首先创建一个大文件夹,用于存放所有的文件和文件夹,命名为train,我将它放到了e盘

然后进行train文件夹,在里面创建model文件夹,该文件夹用于存放要进行训练的大模型相关文件:

接着,在huggingface中选择一个大模型,这里我选择qwen-math-1.5B:Qwen/Qwen2.5-Math-1.5B at main

.gitattributes、LICENSE、README.md,这些都是相关的说明文件,不用下载,剩下的文件都下载下来,放到model文件夹中:

编写训练脚本train.py

# 加载模型和分词器
from unsloth import FastLanguageModel
from local_dataset import LocalJsonDataset
from safetensors.torch import load_model, save_modelmax_seq_length = 4096
dtype = None
load_in_4bit = False
model, tokenizer = FastLanguageModel.from_pretrained(model_name="./model",max_seq_length=max_seq_length,dtype=dtype,load_in_4bit=load_in_4bit,
)model = FastLanguageModel.get_peft_model(model,r = 16, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128target_modules = ["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj",],lora_alpha = 16,lora_dropout = 0, # Supports any, but = 0 is optimizedbias = "none",    # Supports any, but = "none" is optimized# [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long contextrandom_state = 3407,use_rslora = False,  # We support rank stabilized LoRAloftq_config = None, # And LoftQ
)# 加载和预处理数据集
custom_dataset = LocalJsonDataset(json_file='train_data.json', tokenizer=tokenizer, max_seq_length=max_seq_length)
dataset = custom_dataset.get_dataset()# 设置训练配置
from trl import SFTTrainer
from transformers import TrainingArguments
from unsloth import is_bfloat16_supportedtrainer = SFTTrainer(model=model,tokenizer=tokenizer,train_dataset=dataset,dataset_text_field="text",max_seq_length=max_seq_length,dataset_num_proc=2,args=TrainingArguments(per_device_train_batch_size=4,gradient_accumulation_steps=8,warmup_steps=20,max_steps=2000,learning_rate=5e-5,fp16=not is_bfloat16_supported(),bf16=is_bfloat16_supported(),logging_steps=1,optim="adamw_8bit",weight_decay=0.01,lr_scheduler_type="linear",seed=3407,output_dir="outputs",#save_strategy="no"),
)# 训练模型
trainer.train()
model.save_pretrained("lora_model")
tokenizer.save_pretrained("lora_model")FastLanguageModel.for_inference(model)def generate_answer(question):input_text = f"下面列出了一个问题. 请写出问题的答案.\n####问题:{question}\n####答案:"inputs = tokenizer([input_text], return_tensors="pt", padding=True, truncation=True).to("cuda")outputs = model.generate(**inputs, max_new_tokens=2048, use_cache=True)decoded_output = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]return decoded_output.split('<|im_end|>')[0].strip()print("请输入您的问题,输入'exit'退出:")
while True:user_input = input("> ")if user_input.lower() == 'exit':print("程序已退出。")breakanswer = generate_answer(user_input)print("---")print(answer)

在这个脚本中,有几个点需要注意:

调整model_name:model_name的值要改成你的大模型相关文件所在的相对路径,比如我的大模型相关的文件,相对于train.py,在model文件夹中,所以需要改成model_name="./model"

调整 max_seq_length:不同模型支持的最大序列长度不一样,我训练的大模型是Qwen2.5-math-1.5B,通过查阅资料,得知其支持的最大序列长度为4096,所以我改成max_seq_length = 4096

剩下的参数,根据实际情况调整。

将train.py放到与model同级的位置:

编写运行脚本run.py,用于测试训练后的大模型:

from unsloth import FastLanguageModelmax_seq_length = 4096
dtype = None
load_in_4bit = False
model, tokenizer = FastLanguageModel.from_pretrained(model_name="lora_model",max_seq_length=max_seq_length,dtype=dtype,load_in_4bit=load_in_4bit,
)FastLanguageModel.for_inference(model)def generate_answer(question):input_text = f"下面列出了一个问题. 请写出问题的答案.\n####问题:{question}\n####答案:"inputs = tokenizer([input_text], return_tensors="pt", padding=True, truncation=True).to("cuda")outputs = model.generate(**inputs, max_new_tokens=4096, use_cache=True)decoded_output = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]return decoded_output.split('<|im_end|>')[0].strip()print("请输入您的问题,输入'exit'退出:")
while True:user_input = input("> ")if user_input.lower() == 'exit':print("程序已退出。")breakanswer = generate_answer(user_input)print("---")print(answer)

将run.py放到与model同级的位置:

接下来编写local_dataset.py,这个文件是用来设计训练集的里的字段,train.py会引用local_dataset.py里的LocalJsonDataset,这样,在训练大模型时,大模型才能识别到训练集里面的数据。具体代码如下:

import json
from datasets import Datasetcustom_prompt = """下面列出了一个问题. 请写出问题的答案.
### 问题:
{}
### 答案:
{}"""class LocalJsonDataset:def __init__(self, json_file, tokenizer, max_seq_length=4096):self.json_file = json_fileself.tokenizer = tokenizerself.max_seq_length = max_seq_lengthself.dataset = self.load_dataset()def load_dataset(self):with open(self.json_file, 'r', encoding='utf-8') as f:data = json.load(f)texts = []for item in data:text = custom_prompt.format(item['question'], item['answer']) + self.tokenizer.eos_tokentexts.append(text)dataset_dict = {'text': texts  # 添加'text'字段以适配SFTTrainer}dataset = Dataset.from_dict(dataset_dict)return datasetdef get_dataset(self):return self.dataset

将local_dataset.py放到与model同级的位置:

根据上面的代码,我们的训练集(xxx.json)可以设计成这样(这里为方便展示,只列出了两组训练数据):

[{"question": "7.32和7.23哪个数更大?","answer": "比较7.32和7.23的大小:\n1. 整数部分都是7,相等。\n2. 十分位,7.32是3,7.23是2。3大于2。\n因此,无需继续比较,可以得出7.32大于7.23。\n答案:7.32更大。"},{"question": "3.14和3.41哪个数值更高?","answer": "比较3.14和3.41:\n1. 整数部分都是3,相等。\n2. 十分位,3.14是1,3.41是4。4大于1。\n不需要继续比较,可以确定3.41大于3.14。\n答案:3.41的数值更高。"},
]

将训练集放到与model同级的位置:

!!!这里命名为train_data.json,因为在前面的train.py中,我们指定了训练集的名称为train_data.json

然后将整个train文件夹打包,便于后面上传到谷歌云盘

2.将压缩包上传到谷歌云盘

首先需要有谷歌的账号。且全程需要翻墙

进入谷歌云盘(使用谷歌账户登录):drive.google.com

新建一个文件夹,并命名为colab:

我们可以将要用到的资源放到这个文件夹里,之后使用colab时就可以把该文件夹里的资源挂载过去。如此一来,即使colab断线了,使用的资源仍然在该网盘中,不会造成资源的丢失。

然后上传压缩包

可在右下角查看上传的进度

使用colab

colab的使用类似于在本地的浏览器中操作远端的谷歌云服务器。

新建一个colab页面:

在刚开始时,没有colab选项,我们需要点击连接更多应用

搜索colab,并点击下载:

之后会绑定谷歌账户,跟着引导操作即可。

下载完成后,点击colab:

重命名一下

默认情况下,它使用的是CPU,我们需要改成GPU:

选择连接到托管运行:

输入命令,查看当前分配的资源:

!nvidia-smi

可以看到,当前分配的GPU内存有15GB左右。

首先查看当前路径

输入命令!pwd

可以看到,当前在content目录下。

3.训练

挂载谷歌网盘

import os
from google.colab import drive
drive.mount('/content/drive')

进入colab目录

%cd /content/drive/MyDrive/colab

解压train.zip

!unzip train.zip

解压完成后,进入train目录

%cd train

在训练之前,需要安装一些依赖包

pip install unsloth safetensors torch torchvision torchaudio

安装完后,点击重启按钮:

并重新回到train目录(这里就不啰嗦了)

然后就可以训练了,执行:

!python3 train.py

训练时会询问是否启用 wandb 的在线功能,选择3即可,这里不启用。


文章转载自:

http://I1JQihFu.pqkyx.cn
http://p6hTAwAr.pqkyx.cn
http://G3brP4ks.pqkyx.cn
http://ham4OLRV.pqkyx.cn
http://oIQ8kaYu.pqkyx.cn
http://N0EDIcU4.pqkyx.cn
http://D2wZk68H.pqkyx.cn
http://RDNQYNNM.pqkyx.cn
http://OWmoxujR.pqkyx.cn
http://Qjhl6T10.pqkyx.cn
http://wVKN9Leg.pqkyx.cn
http://AWOADdQ5.pqkyx.cn
http://YjeiuHAF.pqkyx.cn
http://RsONOiYT.pqkyx.cn
http://O9DmcuI3.pqkyx.cn
http://HQ5bGeKz.pqkyx.cn
http://p8v5WCQg.pqkyx.cn
http://OmG5U4Cu.pqkyx.cn
http://QHWXfEtE.pqkyx.cn
http://NnQxq7cu.pqkyx.cn
http://0Syf9kUK.pqkyx.cn
http://BlDoWq2T.pqkyx.cn
http://K45URryn.pqkyx.cn
http://3YH95jjK.pqkyx.cn
http://i5vIVxbU.pqkyx.cn
http://5xkjedFk.pqkyx.cn
http://3nGFviSG.pqkyx.cn
http://MscUPnxE.pqkyx.cn
http://53WJHNWW.pqkyx.cn
http://XqjH9KMQ.pqkyx.cn
http://www.dtcms.com/wzjs/692578.html

相关文章:

  • 网站建设学习网站网站建设制作、微信公众号
  • 望牛墩网站建设seo网络营销招聘
  • 高端网站开发培训xml wordpress
  • 领导视察网站建设3a公司网络营销方案
  • 国外做美食视频网站有哪些舆情系统的作用
  • 免费企业网站建设哪种应用软件免费下载
  • 长春网站开发推荐做彩票网站需要什么
  • 媒体公司网站模板北京营销型网站建设
  • 昌平网站建设域名网站建设流程
  • 网站关键词优化wang天津市建设教育培训网
  • 专门做选择题的网站c 做特产网站
  • 厦门做网站xm37广告设计公司成都
  • 山西响应式网站建设公司2017年网站建设工作总结
  • 网站哪里有网站布局规范
  • 金融网站模板素材加快建设乡镇招商网站
  • 白百度一下你就知道搜索引擎优化方法总结
  • 静态手机网站建设的基本特点无锡制作网站价格表
  • 新乡市建设路小学网站专做脚本的网站
  • 做足球经理头像的网站wordpress 萌主题下载
  • 网站建设捌金手指下拉二五慈溪做网站
  • wordpress 建站插件软件开发中需要哪些可行性分析
  • 网站建设有趣名称知乎广告代理商
  • 网站建设包括内容怎么卸载wordpress
  • 网站建设的电话回访长春城投建设投资有限公司网站
  • 网站做网站做任务做网站推广要注意的事项
  • 网站开发人员是什么南宁市有哪些做网站的外包企业
  • 专做奢侈品品牌的网站买的网站模板怎么上传
  • 初学网站开发书籍做网站 怎么选择公司
  • 更改网站模板内容电商网站建设源代码
  • 网站开发攻略英山建设银行网站