自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 收藏
  • 关注

原创 DeepSpeed的hostfile文件

但是,如果你通过 SSH 连接到多个不同的系统,记住所有主机名或 IP 地址,还有用户名是困难的,除非你将它们写在纸上或者将其保存在文本文件中。DeepSpeed多机多卡训练时,需要配置hostfile文件, hostfile文件是一个主机名(或 SSH 别名)列表,这些机器可以通过无密码 SSH 访问,并且还包括 slot counts,用于指定系统上可用的 GPU 数量。如果没有指定或找到 hostfile,则 DeepSpeed 查询本地计算机上的 GPU 数量,以发现可用的本地 slot 数量。

2023-08-31 03:29:40 3088

原创 fuser使用

【代码】fuser使用。

2023-06-19 12:02:16 1495

原创 tar解压缩命令

【代码】tar解压缩命令。

2023-06-12 11:31:01 20523

原创 解决出现“raw.githubusercontent.com (raw.githubusercontent.com)|::|:443... 失败:拒绝连接。“问题

解决方法:1.

2023-06-04 16:09:11 4080 1

原创 pytorch指定多块GPU运行代码

使用了gpu0,1,2,3 共4块同时跑。

2023-05-26 01:44:13 1820

原创 git lfs使用(huggingface下载大模型文件)

最近在看BLOOM,但是Huggingface的仓库里除了我想要的pytoch_model_xxxxx.bin,放了一些别的格式的checkpoints,全部下载的话太大了,而且很慢很慢。需要注意,GIT_LFS_SKIP_SMUDGE=1和后面的git clone必须在同一行才能生效,表示不下载大文件(小文件、大文件的区分依据是有没有使用git lfs)。此时git会下载所有的小文件,比如tokenizer.json ,但是对于git lfs存储的大文件,只会存储一个文本的pointer file.

2023-05-21 03:28:13 19952 8

原创 linux中创建用户并赋予用户sudo权限

链接:linux中创建用户并赋予用户sudo权限

2023-04-10 18:34:14 380

原创 ChatGPT/InstructGPT论文(二)

已有的大型语言模型(例如GPT3.5)并非模型越大越好。越大的模型仍然会生成假的、有害的、简单的和没有用的内容。简单的说,得不到用户想要的内容。1.人工引导,使用监督学习。2.强化学习,人工帮助的情况下,训练一个模型,该模型会进一步引导GPT模型生成优质的结果。实验结果:InstructGPT使用1.3B参数的模型对比GPT-3的1750B参数模型能取得更优的性能(即能生成更优,更有用,更安全,更无害的内容,调戏过ChatGPT的人应该更有体会)。

2023-03-31 17:05:52 2286

原创 ChatGPT/InstructGPT论文(一)

ChatGPT的论文尚未放出,也不知道会不会有论文放出,但是根据公开资料显示,其训练方式,跟OpenAI之前的一个工作——InstructGPT基本无异,主要是训练数据上有小的差异,因此我们可以从InstructGPT的论文中,窥探ChatGPT强大的秘密。本文主要(粗略)解读一下InstructGPT的论文——Training language models to follow instructions with human feedback.

2023-03-31 16:12:53 7806

原创 SGD,Adam,AdamW,LAMB优化器

BERT 预训练包括两个阶段:1)前 9/10 的训练 epoch 使用 128 的序列长度,2)最后 1/10 的训练 epoch 使用 512 的序列长度。优化器是用来更新和计算影响模型训练和模型输出的网络参数,使其逼近或达到最优值,从而最小化(或最大化)损失函数。优点: 简单性,在优化算法中没有太多的参数需要调整,通过少量的计算量就可以获得比较好的结果。为预先设定的超参数,分别代表参数调整的下界和上界。这一简单的调整所带来的实际效果非常显著。随机梯度下降是最简单的优化器,它采用了简单的梯度下降法,

2023-03-31 02:16:49 6520

原创 pytorch中.data与.item(),.numpy(),.detach(),.cuda(),.cpu()的作用

将张量拷贝到 GPU 上。将张量拷贝到 CPU 上。

2023-03-29 01:51:50 1151

原创 python 一次性取出dict的多个key对应的多个value值

主要是由于在coding过程中,有时需要取出很多我们需要的key对应的value来处理。默认输出为按照key排序的序列。

2023-03-29 01:34:59 1526

原创 Python 创建二维数组

Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数。其中 shape 是数组的一个属性,表示获取数组大小(有多少行,有多少列),如果是一维数组,则只显示(行,)。因为它创建出来的是单位矩阵,单位矩阵是正形矩阵,对角线的值均为 1,其他位置的值为 0。虽然 np.arange 和 np.linspace 起到的作用是一样的,都是创建等差数组,但是创建的方式是不同的。为什么会出现在这种情况呢?

2023-03-29 01:16:51 12400 1

原创 Python实现堆排序

堆排序(Heap Sort)是利用堆这种数据结构所设计的一种排序算法。堆的结构是一棵完全二叉树的结构,并且满足堆积的性质:每个节点(叶节点除外)的值都大于等于(或都小于等于)它的子节点。Python实现二叉树递归遍历堆排序先按从上到下、从左到右的顺序将待排序列表中的元素构造成一棵完全二叉树,然后对完全二叉树进行调整,使其满足堆积的性质:每个节点(叶节点除外)的值都大于等于(或都小于等于)它的子节点。构建出堆后,将堆顶与堆尾进行交换,然后将堆尾从堆中取出来,取出来的数据就是最大(或最小)的数据。

2023-03-25 18:35:29 2591

原创 python实现二叉树层次遍历(广度优先遍历)

【代码】python实现二叉树层次遍历(广度优先遍历)

2023-03-25 11:01:41 468

原创 python双向队列deque

mul __(),和 __ imul __() 操作。Deque从版本3.5开始支持 __ add。

2023-03-25 03:14:35 1095 1

原创 Python实现二叉树迭代遍历

【代码】Python实现二叉树迭代遍历。

2023-03-25 00:49:48 397

原创 Python实现二叉树递归遍历

二叉树是一种基础数据结构,二叉树有两种存储方式顺序存储,和链式存储。顺序存储就是用数组来存,链式存储用链表存储,相对于链表二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。

2023-03-24 12:21:29 1492

原创 python3中的heapq模块(堆排序)使用

heapq-堆排序算法:heapq实现了一个适合与Python的列表一起使用的最小堆排序算法。堆就是用数组表示的二叉树,分为大根堆和小根堆,大根堆为堆顶元素最大的堆,小根堆为堆顶元素最小的堆。

2023-03-23 16:44:34 5944

原创 linux 删除指定文件夹外的其他所有(文件)文件夹

说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。复制需要保留的文件到其他文件夹,然后将该目录删除, 然后将需要保留的移动 回来。

2023-03-19 11:42:32 3003

原创 python 列表删除多个元素

推荐使用枚举法和双指针方法删除列表多个元素,不推荐使用列表的pop()方法和remove()方法,容易出错。如果只删除列表一个元素,可以使用列表的pop()和remove()方法。

2023-03-08 02:24:35 13901

原创 Python计数器collections.Counter用法

一个计数器工具提供快速和方便的计数,Counter是一个dict的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一样存储,它们的计数存储为值。计数可以是任何整数值,包括0和负数,Counter类有点像其他语言中的bags或multisets。简单说,就是可以统计计数,来几个例子看看就清楚了。#计算top10的单词 from collections import Counter import re。

2023-03-05 03:20:50 2258

原创 Python list列表全部操作方法

列表是 Python 中最基本的数据结构。列表中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。列表都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型list列表的本质是一种有序的集合。

2023-03-04 03:04:53 2809

原创 Python dict字典全部操作方法

字典是另一种可变容器模型,且可存储任意类型对象。d = {注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。键必须是唯一的,但值则不必,值可以取任何数据类型,但键必须是不可变的,如字符串,数字。字典中的“键”可以是Python中任意不可变数据,例如整数,实数,复数,字符串,元组等等,但不能使用列表、集合、字典作为字典的“键”,因为这些对象是可变的。另外,字典中的“键”不允许重复,而值是可以重复的。

2023-03-03 03:04:16 2654

原创 Python set集合全部操作方法

集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

2023-03-02 12:40:44 652

原创 Pytorch中FLOPs和Params计算

【代码】Pytorch中FLOPs和Params计算。

2023-02-27 20:32:34 1736 2

原创 Pytorch查看tensor是否有梯度(值)以及开启梯度

函数:requires_grad_(requires_grad=True)

2023-02-24 01:09:30 7178

原创 Pytorch高效降低内存 torch.utils.checkpoint()的使用

该技术的核心是一种使用时间换空间的策略。在训练的前向传播中不保留中间激活值,从而节省下内存,并在反向传播中重新计算相关值,以此来执行一个高效的内存管理。主要用于节省训练模型过程中使用的内存,将模型或其部分的激活值的计算方法保存为一个checkpoint,在前向传播中不保留激活值,而在反向传播中根据checkpoint重新计算一次获得激活值用于反向传播。checkpoint操作是通过将计算交换为内存而起作用的。不同于常规地将整个计算图的所有中间激活值保存下来用于计算反向传播,作为检查点的部分不再保存中间激活值

2023-02-23 23:51:37 5094 2

原创 python实现快速排序算法

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。因此,在到达大小为一的数列前,我们只要作log n次嵌套的调用。这个意思就是调用树的深度是O(log n),则总体的最优时间复杂度为:O(nlogn)在最好的情况,每次我们运行一次分区,我们。

2023-02-21 03:05:06 2927

原创 Pytorch DDP分布式数据合并通信 torch.distributed.all_gather()

torch.distributed.all_gather() 官网链接tensor_list每个元素代表每个rank的数据,tensor代表每个进程中的tensor数据,其中tensor_list每个分量的维度要与对应的tensor参数中每个rank的维度相同。

2023-02-21 00:57:05 6787 1

原创 python中的del用法

弄清del的用法,可以帮助深入理解python的内存方面的问题。使用del语句,删除到变量到对象的引用和变量名称本身。del语句用于list列表操作,删除一个或连续几个元素。注意del语句作用在变量上,而不是数据对象上。

2023-02-18 00:06:03 6992

原创 python之argparse传递bool值

参考链接:python之argparse传递bool值

2023-02-14 21:19:56 302

原创 pytorch 根据bool矩阵取出tensor中对应位置元素

此方法中mask是一个bool矩阵,在input中取出mask中True对应的值。第一个例子:结果为一维向量(target是一维的)第二个例子:结果为一个二维的向量(x是二维的)

2023-02-13 02:36:12 2330

原创 PyTorch 分布式训练 --- 数据加载之DistributedSampler

一句话总结:DDP中DistributedSampler保证测试数据集加载固定顺序,且在各个程序中都是一样时(因为shuffle=True时使用了随机种子,不保证在各个程序中测试数据集加载顺序都是一样),最好在DistributedSampler中保证参数shuflle=False,训练集需要保证shuffle=True(DistributedSampler中默认shuffle参数是True)。

2023-02-12 17:05:26 2329

原创 git commit之后,想撤销commit

解决了我的问题,链接:git commit之后,想撤销commit

2023-02-12 13:00:02 98

原创 Linux--无进程却显示占用显存,GPU显存释放方法

程序结束掉,但GPU显存没有释放。

2023-01-15 21:00:58 5737

原创 Pytorch 所有随机数种子固定

为了方便复现和debug,固定随机种子非常重要,这里记录 PyTorch 中固定各种随机种子的方法。

2023-01-10 19:31:08 753

原创 Pytorch中torch.nn.functional.pad()函数

参考链接:Pytorch之torch.nn.functional.pad函数详解

2023-01-10 19:17:34 455

原创 torch.where用法

参考链接:torch.where()用法

2023-01-10 17:53:45 195

原创 pytorch 进行分布式调试debug torch.distributed.launch 三种方式

当进入pdb调试后,跟原先使用pdb调试命令一样,可以在线打断点(再使用pdb命令添加多个断点),也可以逐行执行代码,也能查看变量。唯一缺点是分布式调试需要在代码前手动加上pdb.set_trace()这一行代码,手动打第一个断点。命令行添加pdb后,进入调试的代码在launch.py中,打断点到主程序后,无法进入到住程序里面,------?

2023-01-10 12:53:38 6064 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除