从零开始写ChatGLM大模型的微调代码

news2024/12/24 8:54:25

cursor 的下载及安装(免费版每月100次,升级pro 20刀/月)

cursor是一款与openai合作的,使用gpt-4的一款编程工具,它可以让你通过gpt-4进行辅助编程,以此提高效率。

下载地址:https://www.cursor.so/
cursor的使用

cursor的使用方式极其简易,只有两个快捷键,即ctrl+k\ctrl+l。
ctrl+k 表单形式使用

按快捷键:ctrl+k弹出输入框,输入你所需要写的代码要求及技术按回车即可。如下图。
在这里插入图片描述
程序将自己生成代码:
在这里插入图片描述
ctrl+l 对话框形式使用

按快捷键:ctrl+l弹出输入框,输入你想问的问题,或者内容即可获得相应的回复和对话框。
在这里插入图片描述
cursor可以做到的事

用了之后,发现真的很强大,可以写sql、html、js、算法、找bug等
代码续写、重写能力

ctrl+a + ctrl+k 告诉他帮你续写或者重写

微调大模型实现步骤(cursor生成)

 1. 加载预训练模型
 2. 冻结模型的所有参数
 3. 替换模型的最后一层为新的全连接层
 4. 解冻新的全连接层的参数
 5. 定义损失函数和优化器
 6. 训练新的全连接层
 7. 解冻模型的前几层
 8. 降低学习率
 9. 继续训练整个模型
 10. 保存微调后的模型

加载预训练模型

pretrained_model = models.resnet50(pretrained=True)

冻结模型的所有参数

for param in pretrained_model.parameters():
    param.requires_grad = False

替换模型的最后一层为新的全连接层

pretrained_model.fc = nn.Linear(pretrained_model.fc.in_features, num_classes)

解冻新的全连接层的参数

for param in pretrained_model.fc.parameters():
    param.requires_grad = True

定义损失函数和优化器

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(pretrained_model.fc.parameters(), lr=0.001, momentum=0.9)

训练新的全连接层

for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = pretrained_model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

解冻模型的前几层

for param in pretrained_model.layer4.parameters():
    param.requires_grad = True

降低学习率

optimizer = optim.SGD(pretrained_model.parameters(), lr=0.0001, momentum=0.9)

继续训练整个模型

for epoch in range(10):
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data
        optimizer.zero_grad()
        outputs = pretrained_model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 2000 == 1999:
            print('[%d, %5d] loss: %.3f' %
                  (epoch + 1, i + 1, running_loss / 2000))
            running_loss = 0.0

保存微调后的模型

torch.save(pretrained_model.state_dict(), 'fine_tuned_model.pth')

详情参考:https://blog.csdn.net/KanShiMeKan/article/details/129651474

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/458867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS系统安装Intel E810 25G网卡驱动

因特尔网卡驱动给的都是二进制包,需要编译环境。 首先去Intel下载最新的驱动 E810驱动下载:https://www.intel.com/content/www/us/en/download/19630/intel-network-adapter-driver-for-e810-series-devices-under-linux.html?wapkwe810 里面有三个驱…

量子计算新进展!瑞典和芬兰率先研发芯片

(图片来源:网络) 芬兰和瑞典在北欧率先推出了独立的量子计算机项目,并在未来量子技术方面取得了可喜的新进展。 在瑞典,查尔姆斯理工大学 (Chalmers UoT) 获得了追加的900万欧元(约合6774万元人民币&#x…

风力发电系统的随机调度研究(matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【神经网络】tensorflow实验8--梯度下降法

1. 实验目的 ①掌握TensorFlow的可训练变量和自动求导机制 ②能够使用TensorFlow实现梯度下降法,求解一元和多元线性回归问题 2. 实验内容 下载波士顿房价数据集,使用线性回归模型实现对波士顿房价的预测,并以可视化的形式输出模型训练的过…

【Git】—— 版本控制(忽略文件、查看修改内容,撤销未提交的修改、查看历史提交记录)

目录 一、准备工作 二、忽略文件 三、查看修改内容 四、撤销未提交的修改 五、查看提交记录 前面学习了Git最基本的用法,包括安装Git、创建代码仓库以及提交本地代码。 下面将要学习版本控制。 一、准备工作 先选择一个项目,给它创建一个代码仓库&a…

Linux环境定时备份MySQL数据库

数据库备份常有,实现备份,大概需要3个步骤: 目录 1.创建数据库备份用户 2.创建数据库备份shell脚本 3.创建定时任务 1.创建数据库备份用户 为了数据安全,不建议使用root用户。举例:创建数据库备份用户 dump&#…

复现永恒之蓝[MS17_010]

目录 准备靶机 测试ping连通性 攻击漏洞 利用漏洞 准备靶机 1台kali,1台win7 win7系统可以在MSDN镜像网站里获取 注:将win7安装好,win7无法安装vmtools,若升级系统,可能会把永恒之蓝补丁打上,所以建议别升级系统 测试…

用Java创建可扩展的OpenAI GPT应用程序

ChatGPT 值得深入使用的方面之一是它的引擎,它不仅为基于Web的聊天机器人提供动力,还可以集成到Java应用程序中。 ▌Budget Journey App 想象一下,你想去一个城市旅行并且设置好了预算,你应该如何分配你的钱并让你的旅行难忘&am…

巧用千寻位置GNSS软件|逐点放样应用技巧

线路逐点放样是针对施工需要和设计要求,对线路 20、50、100间隔的整桩距或整桩号的特定桩位进行连续放样设定的程序。运用千寻位置GNSS软件如何快速实现线路逐点放样呢?让我们一探究竟吧! 点击【测量】->【线路逐点放样】,选择…

CMake : Linux 搭建开发 - g++、gdb

目录 1、环境搭建 1.1 编译器 GCC,调试器 GDB 1.2 CMake 2、G 编译 2.1 编译过程 编译预处理 *.i 编译 *.s 汇编 *.o 链接 bin 2.2 G 参数 -g -O[n] -l、-L -I -Wall、-w -o -D -fpic 3、GDB 调试器 3.1 调试命令参数 4、CMake 4.1 含义 4.2…

npm全局包及项目包的讲解与方法

看图可知 安装全局包和项目包 我们通过npm install 命令来安装包,简单说就是把包从npm的官网(或者是指定的镜像源)下载到我们自己的电脑中。那具体这个包下载到哪里了,还是有一点讲究的。 分成两类: 全局安装: 包被…

IntelliJ IDEA 新建安卓项目失败,网上的各种教程都不管用的看向这里!!!

目录 1、出现的问题: 2、解决办法: 1)新建项目 2)修改设置 3、注意 备注: 目的:最近开发机器人远程控制需要一个安卓app,之前是自己做了个H5app来用的,H5不是很稳定,所…

Kotlin基础

Kotlin基础 一.Kotlin介绍1.诞生2.Kotlin与JVM3.为什么学习kotlin?4.Kotlin跨平台特性 二.变量常量类型条件语句函数1.声明变量2.内置数据类型3.只读变量4.类型推断5.编译时常量6.条件语句:表达式7.String模板8.函数 三.匿名函数函数类型高阶函数&#x…

关于OKD(OpenShift)中组件资源介绍和命令行操作的一些笔记

写在前面 参加考试,会陆续分享一些 OpenShift 的笔记博文内容为 openshift 常见 API 资源对象介绍,包括所特有的 Route,IS,DC,BC 等。学习环境为 openshift v3 的版本,有些旧这里如果专门学习 openshift &a…

第一节 ogre源码编译与安装

一. 电脑环境要求 本机使用的编译环境为:系统为Windows 10, Microsoft Visual Studio Enterprise 2019,版本 16.11.26,cmake-3.18.6-win64-x64 这些为基本的操作环境自己可以从网上下载安装。 二. 依赖环境下载 DirectX SDK &a…

Blade项目的IDE支持

Blade是一个C/C构建工具,详细介绍见Blade构建工具。虽然功能强大,但是缺少IDE支持。本文介绍如何在Blade项目中使用IDE的智能提示、自动补全、自动跳转等特性。 1.VSCode VSCode的C/C插件(ms-vscode.cpptools)提供了C/C代码的智能提示、自动补全和调试…

Java编程设计语言-集合类

API(application programming interface)是JDK的重要组成部分,API提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口,可以帮助开发者方便、快捷地开发Java程序 集合在程序设计中是一种重要的是数据结构,Java中提…

数据湖Iceberg-FlinkSQL-kafka类型表数据无法成功写入(6)

数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-FlinkSQL-kafka类型表数据无法成功写入(6) 数据湖Iceberg-Flink DataFrame集成(7) 数据湖Iceberg-FlinkSQL-…

Linux离线状态下在anaconda中安装pytorch

1. 下载与安装说明 下载地址(按安装方法选取) bz2压缩包下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/?CM&ODwhl包下载 torch、torchversion、torchaudio下载地址:https://download.pytorc…

【OS】Linux Process Memory的探究

【OS】Linux Process Memory的探究 前言 刷B站刷到了南大OS的课程&#xff0c;不得不说酒吧舞的教育水平真滴高&#xff0c;狠狠的看了一些关于进程地址相关的课程。 进程地址空间 1.导言 先导入两个问题&#xff1a; 如下的程序会输出什么&#xff1f; #include<stdio…