免费、绿色、专业的手机游戏中心下载安装平台-游家吧

当前位置: 首页 > 教程攻略 > 【AI Studio使用技巧】手把手教你将Notebook转脚本任务

【AI Studio使用技巧】手把手教你将Notebook转脚本任务

时间:2025-08-07

真正的出租车驾驶大城市
  • 类型:
  • 大小:
  • 语言:简体中文
  • 评分:
查看详情

【AI Studio使用技巧】手把手教你将Notebook转脚本任务

本文教你将Notebook转换为脚本的步骤,首先进行单卡仿真确保代码可用性。在run.py文件开头使用os.system安装依赖库和解压数据集。重点讲解多卡代码的改写方法,以单机四卡为例。包括数据并行(用DistributedBatchSampler)、模型参数并行(初始化环境等)及模型保存(仅当rank=进行)。

把手教你将Notebook转脚本任务

现在社区里缺乏关于使用脚本完成模型训练的方法指导,这使得许多同学在从Notebook切换到脚本进行复现实验时遇到了诸多困难。例如,在我们的团队之前进行论文复现的过程中也曾面临过类似的问题。然而,经过一段时间的努力和解决这些问题的实践后,我们积累了丰富的经验和心得。因此,这篇文章将重点介绍如何将Notebook中的代码转换为能够顺利运行在脚本环境下的有效方法。

支持两种方式执行脚本任务:使用 shell 脚本:编写所需命令于 `run.sh` 中,并通过输入 `bash run.sh` 来运行脚本。采用 Python 指令:将运行代码置于 `run.py`,并用 `python run.py` 直接启动脚本。

本教程以python指令的运行方式为主,手把手带大家将Notebook里的单卡训练代码转写成脚本任务的多卡训练代码。

一、脚本任务单卡仿真

在进行转脚本任务之前,确保你的原生模型在单卡上能够正确工作是至关重要的。在此之前,避免直接将多卡部署的代码添加到现有任务中。务必首先构建并优化你的训练脚本能成功地在单卡上运行。只有在这一过程稳定无误后,再逐步加入多卡版本的实现。

这里可以参考开发者北漂包包的脚本任务仿真环境快速测试你的代码。

在确认代码正确无误后,就可以正式地将你的代码从Notebook迁移到脚本任务上了

二、依赖库的安装

在脚本任务中,官方提供了许多预装的依赖库以简化开发过程。然而,有时你需要使用未在环境中安装的特定依赖库。为此,可在代码执行前手动安装这些所需的依赖库。

安装方法也很简单,我们可以用Python自带的os.system调用shell命令: In [2]

# 放在主程序run.py的开头,即先装依赖库再"炼丹"import os os.system("pip install -r requirements.txt")登录后复制

三、数据集准备

在脚本任务中,加载的压缩数据集通常需要先进行解压处理,因为它们以未解压的形式存在。为了简化这个过程,可以使用os.system命令来执行解压操作,并借助-d参数确保文件正确地解包到指定路径。例如:```bash tar -xvzcf input.tar.gz --directory /destination ```这里,输入的tar文件需要替换为实际的压缩包名称,而/destination则是存放解压后数据的目录。这种方法不仅简化了脚本代码,还确保了数据处理过程的高效性和准确性。

os.system("unzip -d /root/paddlejob/workspace/train_data/datasets/ /root/paddlejob/workspace/train_data/datasets/data2021/dataset.zip")登录后复制

上面这句指令的意思是将dataset.zip这个未解压的数据集解压到脚本文件的数据集文件目录/root/paddlejob/workspace/train_data/datasets/

四、多卡代码改写

在AI Studio中,脚本任务不仅支持单机四卡,还实现了分布式训练(双机四卡)。这两种模式下使用的计算资源相同,都为四卡配置,运行效率的差异不会很大,因此重点介绍的是单机四卡的情况。

1.数据并行

相关api文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/io/DistributedBatchSampler_cn.html#distributedbatchsampler

多卡并行任务需要将数据分到各个卡上,因此需要改写DataLoader,使用分布式批采样器加载数据的子集,比如4卡就是把数据分为4个子集,然后把这4个子集分别送入这个4块卡,从而提高“炼丹”速度,首先导入分布式批采样器:

from paddle.io import DistributedBatchSampler登录后复制

然后在加载DataLoader之前先用DistributedBatchSampler将数据集划分为多个子集,具体使用方法可参考如下代码: In [5]

from paddle.vision import datasetsfrom paddle.io import DistributedBatchSampler, DataLoader trainset = datasets.Cifar100(mode="train", download=True) train_sampler = DistributedBatchSampler(trainset, batch_size=8, drop_last=False) train_loader = DataLoader(trainset, num_workers=4, batch_sampler=train_sampler)登录后复制

2.模型参数并行

相关api: DataParallel:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/DataParallel_cn.html#dataparallel init_parallel_env:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/distributed/init_parallel_env_cn.html#init-parallel-env spawn:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/06_device_cn.html#spawn

这部分其实很好改,只需要添加4行代码: In [8]

为优化性能,使用Paddlepaddle和Distributed训练库并行运行模型。首先导入依赖,初始化并行环境,然后进行分布式参数同步和优化器配置,并启动多线程执行主函数。

3.模型参数保存

相关api:get_rank:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/distributed/get_rank_cn.html#get-rank

当进程号与训练环境中定义的ID相匹配时,才执行模型参数的保存操作。

model_to_save = model.state_dict() model_checkpoint = os.path.join(output_dir, "%s_checkpoint.pdparams" %model_name)if paddle.distributed.get_rank() == 0: paddle.save(model_to_save, model_checkpoint)登录后复制

以上就是【AI Studio使用技巧】手把手教你将Notebook转脚本任务的详细内容,更多请关注其它相关文章!

精品推荐

相关文章

最新资讯

热门文章

更多

最新推荐

更多