【深度学习·实践篇】CodeT5模型学习与基于CodeT5进行新的模型训练

文章目录

  • 写在前面
  • 一. 一些名词
  • 二. 基于Codet5训练自己的模型
    • 理论步骤:
      • 1. 安装依赖
      • 2. 下载CodeT5代码库
      • 3. 准备数据集
      • 4. 修改训练脚本
      • 5. 启动训练
      • 6. 进行预测
    • 具体实践
      • 1. 准备数据集
      • 2. 配置运行环境
      • 3. 修改脚本参数
      • 4. 为实现分布式训练,修改脚本
        • 如何实现分布式训练?
          • (1)理解分布式训练的概念:
          • (2)实现分布式训练的步骤:
          • (3)要修改配置文件的相关参数,首先要了解自己的电脑/服务器的GPU配置。
      • 5. 配置运行环境
      • 6. 启动训练
      • 7. 使用模型

写在前面

本文章记录CodeT5模型的学习过程,笔者深度学习的基础较浅。
学习目标是基于CodeT5掌握基本的模型建立与模型训练知识,同时基于codet5模型训练可以自动生成go语言代码的模型。

Codet5代码库

  • chatgpt是我学习模型训练的过程中最有用的工具。确实牛。以下的很多内容也都来源于chatgpt。
  • 同时,本文的主要目的是记录我的学习过程。不保证我所写的内容的正确性。
  • 诸多内容已标注来源。

未完。

一. 一些名词

  • fine-tune:

    1. What is fine-tune?
    • 微调是金融和经济中用于减轻损失和经济压力的一种策略。
    • 它涉及进行小的修改和改进。
    • 它可以使用不同的策略来执行,例如技术分析,可以手动或使用新技术自动执行。
    1. What is fine-tune in deep learning?
      Fine-tuning in deep learning is accomplished by combining datasets from established networks and using them efficiently by using time, money, and other resources more practically.
    2. How to fine-tune a deep learning model?
  • transformer

参考:
(原文)http://jalammar.github.io/illustrated-transformer/
(中文版1) https://zhuanlan.zhihu.com/p/82312421
(中文版2)https://blog.csdn.net/qq_36667170/article/details/124359818

  • checkpoint
    Checkpoints play an important role in training long running machine learning (ML) models. Checkpoints take a snapshot of an ML model and store it in a non-volatile memory so that they can be used to recover from failures to ensure rapid train- ing progress.
    应用检查点是一种用于长时间运行的进程的容错技术。
    在这种方法中,在系统出现故障的情况下拍摄系统状态的快照。如果出现问题,也不会全部丢失。检查点可以直接使用,也可以作为新运行的起点,从中断的地方继续运行。
    在训练深度学习模型时,检查点位于模型的权重处。这些权重可用于按原样进行预测或作为持续训练的基础。
  • 迁移学习
  • 预训练模型

参考: https://paddlepedia.readthedocs.io/en/latest/tutorials/pretrain_model/pretrain_model_description.html

从字面上看,预训练模型(pre-training model)是先通过一批语料进行训练模型,然后在这个初步训练好的模型基础上,再继续训练或者另作他用。这样的理解基本上是对的,预训练模型的训练和使用分别对应两个阶段:预训练阶段(pre-training)和 微调(fune-tuning)阶段。

  • 编码器-解码器模型:

二. 基于Codet5训练自己的模型

理论步骤:

由于我没有训练模型的基础,所以步骤部分我直接一步步问了chatgpt,以下6个步骤是chatgpt的回答+我的总结。
里面具体的代码细节可能无法对应到具体的模型代码里(实际实践可以看下一节),但是整体步骤和思路是正确的。

1. 安装依赖

需要安装必要的依赖项,包括Python 3、TensorFlow、Git、unzip等。可以通过以下命令安装这些依赖项:

# 安装Python 3和pip
sudo apt-get update
sudo apt-get install python3 python3-pip# 安装TensorFlow和Git
pip3 install tensorflow-gpu git# 安装unzip工具
sudo apt-get install unzip

2. 下载CodeT5代码库

通过以下命令将代码库克隆到本地计算机(或者远程服务器)上:

git clone https://github.com/salesforce/CodeT5.git

3. 准备数据集

在进行训练之前,需要准备一个包含自然语言文本和对应的带有类环境的Go代码的数据集。可以将每个样本保存为一个TFRecord文件。需要确保每个TFRecord文件都包含以下特征:

  • inputs: 包含一段自然语言文本和带有类环境的Go代码的输入序列。
  • targets: 包含生成的Go代码的目标输出序列。
    以下是一个示例数据集的目录结构
./dataset/
├── train.tfrecords
├── valid.tfrecords
└── test.tfrecords

4. 修改训练脚本

  • 修改CodeT5代码库中的训练脚本run_gen.py。在这个脚本中,需要在各个函数中增加自定义任务的选项。

  • 修改CodeT5代码库中的参数脚本configs.py。在这个脚本中需要配置训练参数、数据集路径、模型参数等。可以通过在代码中硬编码来指定各个参数的值,也可以在指令中指定。

    建议在指令中再指定,硬编码到文件里会有一些奇怪的错误(个人经验)。

    可以通过以下步骤来修改脚本:

    打开CodeT5/configs.py文件。

    找到以下参数,并根据需求进行修改:

    • model_size: 模型的大小。可以选择"small"、“base”、“large"或"xlarge”。
    • batch_size: 训练时的批量大小。
    • num_train_steps: 训练时的总步数。
    • learning_rate: 训练时的学习率。
    • model_dir: 模型保存的路径。
    • train_file_pattern: 训练数据集的路径,支持通配符。
    • eval_file_pattern: 验证数据集的路径,支持通配符。
    • predict_file_pattern: 测试数据集的路径,支持通配符。
    • tpu_name: 如果您使用TPU训练模型,需要指定TPU的名称。
    • get_dataset: 加载数据集的函数。您需要根据您的数据集格式修改该函数中的代码,以正确加载您的数据集。
    • get_model_params: 获取模

5. 启动训练

运行run_gen.py文件。

6. 进行预测

完成训练后,可以使用训练好的模型进行预测。使用以下命令来进行预测:

python3 run_codet5.py --mode=predict --predict_file_pattern=path/to/predict.tfrecords

其中,path/to/predict.tfrecords是要进行预测的TFRecord文件的路径。预测的结果将会保存在model_dir/predictions/predictions-XXXXX.json文件中。

具体实践

1. 准备数据集

由于codet5是使用tensorflow进行训练的(CodeT5模型的实现是基于TensorFlow 2.x框架的),所以需要将原始数据(通常存放在json文件或者csv文件中)转换为TFRecord格式。

TFRecord是一种高效的二进制文件格式,可以将多个数据样本组织在一个文件中,并且可以轻松地在训练过程中进行并行读取和解析。

具体的转换可以用python代码实现。


更新:
数据的转换在run_gen.py中已经通过请添加图片描述
这个几行代码实现。不需要自己实现,只需指定数据的路径即可。

2. 配置运行环境

由于我是在服务器上跑模型,没有root权限,最终选择使用docker管理环境。

具体的配置过程请看我的另一篇博客:Docker学习与实战记录

3. 修改脚本参数

正如上文所说:可以通过在代码中硬编码来指定各个参数的值,也可以在指令中指定。
建议在指令中再指定,硬编码到文件里会有一些奇怪的错误(个人经验)。

  • 首先要了解什么是脚本,参数是什么意思。

    每个模型都需要有一个配置文件来指定训练和推断的各种参数和设置。这些配置文件通常以一种特定格式进行存储,例如YAML或JSON格式。这些格式都是轻量级的,易于阅读和编辑,并且可以很容易地转换为Python对象,以便在代码中使用。

  • 在配置文件中,通常会包含以下内容:

    • 模型架构的名称或路径
    • 数据集的路径或URL
    • 模型训练的超参数,如学习率、批大小、训练轮数等等

    这里,可以了解一下模型的参数超参数的概念。

    • 参数:模型可以根据数据可以自动学习出的变量,比如,深度学习的权重,偏差等。
    • 超参数:用来确定模型的一些参数,超参数不同,模型是不同的(比如说:假设都是CNN模型,如果层数不同,模型不一样,虽然都是CNN模型。)。超参数通常是在模型训练之前设置的,需要手动调整以找到最优的超参数组合,以使得模型能够在训练集和测试集上表现最佳。超参数不是通过训练数据来确定的,而是需要人为设定。
    • 模型推断时的参数,如最大序列长度、生成温度等等
    • 模型训练和推断的路径,如模型保存路径、日志文件路径、预测结果路径等等
      通过使用配置文件,可以方便地修改和调整模型的各种参数和设置,而无需更改代码。这样可以提高代码的可维护性和灵活性。
  • 通常情况下,配置文件会以YAML或JSON等结构化数据格式进行存储,因为这些格式具有良好的可读性和易于管理的特点。但是,也有一些特殊情况下,可能会使用其他格式来存储配置文件。

    CodeT5原本是基于TensorFlow实现的,但是它也有一个pytorch版本的实现。这里我只使用了基于tensorflow实现的模型的配置文件。

    CodeT5的配置文件,有的使用的是sh脚本的形式进行存储(CodeT5/sh/exp_with_args.sh),有的是使用python文件存储(CodeT5/configs.py)。

  • 为什么需要配置文件?

    这是因为CodeT5的配置文件非常复杂,包含了很多不同的参数和选项,需要进行大量的数据预处理和模型训练。使用脚本可以将这些操作集成在一起,并在需要时自动运行,从而提高了效率和便利性。此外,脚本还可以通过命令行参数接收外部输入,使得配置文件更加灵活和可配置。

我初步没有对CodeT5原来的脚本进行修改。在命令行中指定。

4. 为实现分布式训练,修改脚本

更新:

  • CodeT5中可以通过直接指定--n_gpus--rank参数来实现分布式训练。不需要自己再配置。
  • 我之所以需要用到分布式训练是因为训练时提示我GPU容量不够,但是最后发现这个错误提示是由于我配置文件的问题(?奇怪),将配置文件恢复初始化然后自己在命令行中指定参数后,错误消失,不需要采用分布式训练。

由于我导给我分配的服务器内存不够训练模型(偷偷吐槽🤭🤭),所以需要合并两个3090来训练,为此需要修改配置文件以实现模型的分布式训练。

如何实现分布式训练?

(1)理解分布式训练的概念:

分布式训练(Distributed Training)是一种将单个深度学习模型训练任务分割成多个部分,并通过多个计算设备(如多个GPU或多个计算机)同时执行这些部分的技术。它可以显著加快深度学习模型的训练速度,提高训练效率和性能。

在传统的单机训练中,深度学习模型的所有计算任务都在单个计算设备上执行,这限制了模型的训练速度和规模。而在分布式训练中,模型训练任务被分割成多个部分,这些部分可以在多个计算设备上并行执行,从而提高了训练速度和规模。

(2)实现分布式训练的步骤:

一般而言,实现分布式训练需要以下几个步骤:
1. 设计模型架构:在设计模型架构时需要考虑分布式训练的需求,例如如何分割数据、如何定义模型参数以及如何同步模型参数等。
2. 数据准备:在进行分布式训练时,需要将数据集进行分割,并将不同部分的数据分配给不同的计算节点,以便在节点之间共享数据。通常,数据可以通过分布式存储或者分布式文件系统进行管理和存储。
3. 启动训练:启动分布式训练需要进行多个步骤,包括设置训练参数、定义节点角色、设置网络拓扑结构以及启动训练进程等。
4. 优化算法:为了获得更好的训练效果和更快的训练速度,需要对优化算法进行改进,例如采用异步梯度下降、累积梯度、压缩梯度等技术。
5. 监控和调试:在分布式训练过程中,需要对训练进程进行监控和调试,以便及时发现和解决问题,例如通过可视化工具观察训练曲线、打印日志信息等。

总体而言,分布式训练是一项复杂的任务,需要对计算、通信、优化算法等多个方面进行优化和调整,以获得更好的训练效果。

对于CodeT5这种已经实现了分布式训练的框架,设计模型架构和启动训练可以通过修改配置文件来完成,具体来说:

  • 第1步设计模型架构:CodeT5的模型架构已经在代码中实现,可以在配置文件中指定模型名称和其他超参数来选择不同的模型架构,不需要修改其他文件。
  • 第3步启动训练:CodeT5已经封装好了分布式训练的代码,在配置文件中可以指定使用多少个GPU进行训练,以及训练的其他超参数,不需要修改其他文件。

因此,在使用CodeT5进行分布式训练时,只需要修改配置文件即可完成模型架构和训练参数的调整。

至于第3步数据准备,可以通过随机分配的方式来划分数据,也可以通过修改配置文件来完成数据准备。具体地,可以在配置文件中设置训练集、验证集和测试集的路径,代码会读取这些路径下的数据进行训练、验证和测试。可以将数据集分成不同的文件,然后在配置文件中指定每个文件的路径,以实现数据划分。

在CodeT5中,数据准备的相关配置参数包含在configs/data_configs.py文件中。可以在该文件中修改TRAIN_FILE, VALID_FILE, TEST_FILE等参数来指定训练集、验证集和测试集的路径。如果需要进行数据增强、数据预处理等操作,也可以在该文件中设置相关参数。

(3)要修改配置文件的相关参数,首先要了解自己的电脑/服务器的GPU配置。

在终端输入nvidia-smi可以得到关于GPU的信息。

举例学习:
当你在终端输入nvidia-smi命令时,它将返回所有 NVIDIA GPU 设备的相关信息,包括GPU的设备编号、GPU的利用率、显存使用情况、进程占用情况等等。下面是一些关于如何解读 nvidia-smi 命令返回的信息的例子:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.42.01    Driver Version: 470.42.01    CUDA Version: 11.4      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-PCIE...  On   | 00000000:3B:00.0 Off |                    0 |
| N/A   47C    P0    25W / 250W |  12688MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla V100-PCIE...  On   | 00000000:AF:00.0 Off |                    0 |
| N/A   46C    P0    26W / 250W |  12688MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   2  Tesla V100-PCIE...  On   | 00000000:D8:00.0 Off |                    0 |
| N/A   46C    P0    25W / 250W |  12688MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   3  Tesla V100-PCIE...  On   | 00000000:E1:00.0 Off |                    0 |
| N/A   46C    P0    28W / 250W |  12688MiB / 16160MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

上面的输出表明有4个 GPU 设备,编号分别为 0, 1, 2, 3。这里给出一些有用的信息:

  • Tesla V100-PCIE:GPU设备的型号名称。
  • On:GPU设备是否在使用中。如果是 Off,说明这个GPU当前没有被分配给任务使用。
  • Bus-Id:GPU 设备的物理位置。
  • Memory-Usage:显存使用情况,第一个数字是已经被占用的显存,第二个数字是总显存。
  • GPU-Util:GPU 利用率,表示 GPU 当前的计算任务占用率。

根据上面的例子,我们可以确定第一个节点的GPU设备列表为 [0, 1, 2, 3]。即,第一个节点有4个GPU设备,它们的设备编号分别为0、1、2、3。

在这里,解释一下一直提到的“节点”这个概念:
在分布式训练中,节点是指参与训练的物理或虚拟机器,每个节点都可以拥有多个GPU设备。节点可以是多台物理机器,也可以是同一台物理机器上的多个虚拟机。在节点之间通过网络通信来共同完成模型训练的任务。

5. 配置运行环境

由于我是在服务器上跑模型,没有root权限,最终选择使用docker管理环境。

具体的配置过程请看我的另一篇博客:Docker学习与实战记录

6. 启动训练

在Docker环境中,在命令行中指定各个参数启动run_gen.py文件。

7. 使用模型

训练只得到了模型的.bin文件,但是要使用模型还需要其他的配置文件等。
由于我在训练过程中没有修改预训练模型的超参数,因此我直接copy了预训练模型的config.json。

之后将模型上传至Huggingface。这样方便调用。

使用Huggingface的步骤

参考Huggingface上传自己的模型

  • 注册登陆
  • 在终端中下载git lfs
apt-get install git-lfs
git lfs install
  • 使用git lfs version查看是否下载成功
  • 在Huggingface中创建model仓库
  • 在终端中git clone仓库至本地
  • 将训练得到的模型的.bin文件和配置文件cp至仓库中
  • 上传至远程仓库
git add .
git commit -m  <message>
git push
  • 完成

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机安装Ubuntu18.04

一、下载VMware VMware下载地址&#xff1a;https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 安装这个太久了&#xff0c;可以网上搜一下安装流程不难&#xff0c;只有一个建议&#xff0c;安装路径不要有中文 可以参考下面教程&#xff0c…

智能PID软件-AVEVA Diagrams创建图纸模板【图瓦软件出品】

AVEVA Diagrams可以针对不同的项目&#xff0c;定义公司级和项目级的图纸模板&#xff0c;包括图纸图框和角图章。不仅大大节约设计人员的时间&#xff0c;而且能够确保成品图纸的一致性和规范性。下面我们介绍一下如何在Diagrams中定制图纸模板&#xff0c;初步了解一下Diagra…

5 款必备的免费在线画图工具!超级好用

大家好&#xff0c;我是宝哥&#xff01; zen flowchart 虽然是英文&#xff0c;但其实也并没有多么复杂的内容&#xff0c;而且浏览器现在都带有页面翻译的功能&#xff0c;所以还是蛮方便的&#xff01;初次使用需要注册&#xff0c;也并不难&#xff0c;随便自己的一个邮箱注…

最新ChatGPT开源平替模型骆马(Vicuna) 单个GPU就能跑!UC伯克利领头,130亿参数「小羊驼」权重公布

转载&#xff1a;单个GPU就能跑&#xff01;UC伯克利领头&#xff0c;130亿参数「小羊驼」权重公布 【导读】刚刚&#xff0c;UC伯克利、CMU、斯坦福等&#xff0c;联手发布了最新开源模型骆马&#xff08;Vicuna&#xff09;的权重。 3月31日&#xff0c;UC伯克利联手CMU、斯…

试用国内及国外AI绘图软件后的总结

最近AI很火&#xff0c;所以这几天抱着试试看的角度试用了多款AI绘图软件&#xff0c;大概测试了市面上的3款工具吧&#xff0c;3款国外的&#xff0c;1款国内的。 因为有对比&#xff0c;波哥也不是专业的评测机构出身&#xff0c;所以这些比对无论是从角度&#xff0c;还是从…

这家付费图库巨头率先拥抱AI绘画,还掏钱补偿原创画师

詹士 发自 凹非寺量子位 | 公众号 QbitAI 画师与AI生成图片争议不断&#xff0c;有平台给出了解决方案。 而且是掏真金白银补偿创作者那种。 美东时间10月25日&#xff0c;付费图库Shutterstock宣布&#xff1a;将通过出售AI生成图片&#xff0c;向创作者提供补偿费&#xff0c…

OpenAI 发布GPT-4——全网抢先体验

OpenAI 发布GPT-4 最近 OpenAI 犹如开挂一般&#xff0c;上周才刚刚推出GPT-3.5-Turbo API&#xff0c;今天凌晨再次祭出GPT-4这个目前最先进的多模态预训练大模型。与上一代GPT3.5相比&#xff0c;GPT-4最大的飞跃是增加了识图能力&#xff0c;并且回答准确性也得到显著提高。…

GPT-4正式发布!如何访问 怎么免费使用GPT-4?

美国人工智能研究实验室OpenAI&#xff0c;周二为其爆红聊天机器人ChatGPT发布了最新GPT-4语言模型&#xff0c;这距离ChatGPT的上线仅仅过去了4个月时间。 和ChatGPT最初使用的GPT-3.5模型相比&#xff0c;GPT-4实现了几个方面的飞跃式提升&#xff1a;强大的识图能力&#x…

谷歌Bard最新更新:支持中文,还升级了ChatGPT都没有的识图功能

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 两个月前咱们刚盘点完 Bard 的大更新&#xff0c;在那两周中&#xff0c;谷歌将全家桶和 Bard 联动不久&#xff0c;还推出了十大新功能&#xff0c;当时他们就在博客更新中提到&#xff0c;会在今年夏天新增对中文等另外 40…

GPT-4来炸场:10秒输出一个网站,识图知意 so easy,为何如此丝滑

比被卷更可怕的莫过于自己卷自己&#xff0c;这点还得是OpenAI更胜一筹。 四个月前&#xff0c;ChatGPT 刚刚推出&#xff0c;并成为历史上增长最快的消费者应用程序。在ChatGpt大杀四方时&#xff0c;万众瞩目的大型多模态模型GPT-4也在今天凌晨正式发布。 据OpenAI官方介绍&…

使用GPT-4生成QT代码

一、概述 最近ChatGPT火爆起来了&#xff0c;ChatGPT是一种基于GPT的自然语言处理模型&#xff0c;可以用于生成自然语言文本&#xff0c;例如对话、文章等。最近又发现了一个优秀且免费的代码生成工具Cursor &#xff0c;Cursor集成了 GPT-4 &#xff0c;可以帮助你快速编写、…

chatgpt赋能python:Python如何查看图片

Python如何查看图片 在SEO优化中&#xff0c;图片也是至关重要的一部分。而在Python中&#xff0c;我们可以使用一些代码来查看图片。下面就来介绍一下Python如何查看图片的方法。 1. 安装Python相关库 要使用Python查看图片&#xff0c;需要先安装一些相关的库。常用的库包…

ChatGPT之后,垂直大模型兴起

由ChatGPT掀起的这一波大模型浪潮中, 百度、阿里等大厂相继下场&#xff0c;王慧文、王小川、李开复等大佬也纷纷入场。年初&#xff0c;比尔盖茨高呼“人工智能时代已经开始”&#xff0c;给大模型定下了宏伟的基调。随着竞争的展开&#xff0c;大模型已不是“是否”问题&…

大佬下场AI2.0,我们帮“王慧文们”指条明路

划重点&#xff1a; 1、如果将开发大模型比做是“造房子”&#xff0c;那AI Infra 就是“工具箱”&#xff0c;而中国缺少的正是工具和原材料制造工厂。 2、根据国外市场的情况&#xff0c;可以将整个AI Infra大致分为数据准备、模型构建、模型产品三个层面&#xff0c;在这三…

win10系统提示 “你的账户已被停用,请向系统管理员咨询” 如何解决 ?

今天有位朋友,可以是不知道是为了寻求刺激,还是刷存在感, 把自己的win10系统管理员账号 Administrator 将用户给禁用了&#xff0c;并且注销完开机后,就是电脑突然提示“你的账户已被停用&#xff0c;请向系统管理员咨询”如图 : 解决方法 此情况可以长按电源键强制关机再开机…

google账号已停用(已解决)

很久没登陆Google邮箱了 近期想使用google diver发现账号被停用了 进行申请&#xff0c;但是一直没恢复 记录一下解决方法&#xff1a; 1、手机上下载谷歌邮箱和商店 2、科学进入谷歌邮箱 我是想再创建一个号的&#xff0c;在创建的过程中&#xff0c;app提示我已经有一个谷…

程序员兼职社区招募,需要技术能力强,博主粉丝皆可参与发展副业

程序员兼职社区招募 1. 机会多多2. 技术方向3. 要求4. 最后 1. 机会多多 2. 技术方向 技术方向主要为&#xff1a;Python&#xff0c;MATLAB&#xff0c;深度学习&#xff0c;语义分割 &#xff0c;机器视觉&#xff0c;知识图谱 &#xff0c;强化学习&#xff0c;三维点云&…

2023该好好赚钱了,推荐三个下班就能做的副业

在过去的两年里&#xff0c;越来越多的同事选择辞职创业。许多人通过互联网红利赚到了他们的第一桶金。随着短视频的兴起&#xff0c;越来越多的人吹嘘自己年收入百万&#xff0c;导致很多刚进入职场的年轻人逐渐迷失自我&#xff0c;认为钱特别容易赚。但事实上&#xff0c;80…

做什么副业比较赚钱,这五个项目现在入行可能比上班挣得还多

还有2个月不到的时间&#xff0c;2022就要过去了&#xff0c;这一年太魔幻了&#xff0c;而普通人的生活也的确太难了&#xff01; 这一年&#xff0c;各行各业都在萎缩&#xff0c;制造业急剧萎缩&#xff0c;要么不能静态生产&#xff0c;要么生产了就送不出去&#xff0c;因…

简单易学的网上副业,能帮你减轻压力的六个副业

现在经济环境很差&#xff0c;大多数上班族生活不好&#xff0c;要么遇到行业低谷收入急剧下降&#xff0c;要么公司管理不善成为失业军队的一员&#xff0c;底层人民生活困难&#xff0c;但为了孩子有一个良好的成长环境&#xff0c;为了让他们掏空父母的积蓄买房子不被银行拿…