自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sglang框架源码笔记

SGLang 后端代码的代码梳理,按照一个请求从输入到最后输出的顺序进行讲解。

2025-02-26 13:51:04 738

原创 libstdc++.so.6路径问题

如何将这个ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.13’ not found (required by /opt/aps/workdir/miniconda3/envs/paddle/lib/python3.10/site-packages/paddle/base/libpaddle.so)改为先找conda的环境中的这个错误表明当前程序在运行时,加载的是系统路径下的,而不是提供的版本。

2024-12-18 19:47:04 630

原创 python/pytorch功能示例

【代码】python/pytorch功能示例。

2024-09-26 16:54:55 819 1

原创 python功能测试

是 Python 中非常流行的测试框架,简单易用,功能强大,适合编写单元测试和集成测试。是 Python 自带的单元测试框架,用于编写、组织和运行测试。的语法简单而灵活,非常适合写 Python 的测试代码。提供了强大的夹具功能(Fixture)来在测试中共享和复用资源。装饰器,可以实现参数化测试,让同一个测试函数可以测试多个输入和预期输出。框架的常见用法,你可以根据需要编写单元测试并运行以确保代码的正确性。可以一次运行整个目录中的测试文件,自动查找所有。可以直接通过函数来编写测试,而不需要像。

2024-09-26 16:02:38 2528

原创 accelerate一些类和函数说明二

提供了一种优雅且简洁的方式来创建上下文管理器。它有助于在资源管理、事务处理、状态控制等需要确保清理或回滚的场景中简化代码结构。通过使用yield来分割进入和退出上下文的逻辑,开发者可以更直观地理解和管理资源的生命周期。这段代码是一个配置混合精度训练的逻辑框架,根据不同的精度设置和设备类型,启用或禁用自动混合精度,并选择适当的梯度缩放器。这对于优化深度学习模型的训练性能和资源使用非常重要。根据不同的硬件平台和训练需求,确保选择和配置正确的 AMP 和梯度缩放器,以实现高效和准确的模型训练。这个。

2024-09-03 18:31:12 1119 1

原创 accelerate一些类和函数说明一

这个类的主要作用是提供一个结构化的方式来定义和管理项目的配置参数。通过使用dataclass,它使得代码更加简洁,同时使用了默认值和元数据来提供对每个参数的详细帮助信息。该类适用于管理训练过程中的目录设置、日志记录、检查点保存策略等配置项,特别是对于多节点分布式训练的场景。

2024-09-03 18:30:41 754

原创 accelerate相关笔记

是指在 NUMA 架构下优化内存访问效率,以减少远程内存访问的次数和延迟,从而提升系统和应用程序的整体性能。当被问及是否要启用 NUMA 效率时,通常意味着系统可以应用这些优化策略,以便更好地利用硬件资源,尤其是在需要高性能和低延迟的环境中。是 Hugging Face 的 Accelerate 库中一个用于分布式训练的函数,主要用于在分布式环境中收集和聚合所有进程的评估指标(metrics)或数据。

2024-08-26 11:44:11 1391

原创 单GPU高效训练笔记

Micro-batch 是指在训练过程中将大的 Batch size 拆分成更小的批次进行处理的策略,广泛用于优化计算资源、实现梯度累积以及支持分布式训练。它帮助在处理能力有限的情况下依然能够进行高效且稳定的模型训练。TorchDynamo 是 PyTorch 中一个重要的动态编译和优化工具,它通过捕获、转换和优化计算图,为深度学习模型提供性能提升。其透明性和兼容性使得用户可以轻松地在现有代码中应用它,从而在不改变模型逻辑的前提下获得更好的执行效率。

2024-08-26 11:41:56 2186

原创 大模型分布式训练技术(DP、DDP和FSDP)

本文主要讲解了大模型分布式训练并行技术的数据并行,并以Pytorch为主线讲解了DP、DDP、FSDP三种不同的数据并行方案。单进程多线程模式,由于锁的机制导致线程间同步存在瓶颈。使用普通的All-Reduce机制,所有的卡需要将梯度同步给0号节点,并由0号节点平均梯度后反向传播,再分发给所有其他节点,意味着0号节点负载很重。由于第二点的原因,导致0号GPU通讯成本是随着GPU数量的上升而线性上升的。不支持多机多卡。目前,由于性能问题,DP基本不用了。

2024-08-26 11:36:51 3403

原创 大模型分布式训练技术概括

数据并行是最常见的并行形式,因为它很简单。在数据并行训练中,数据集被分割成几个碎片,每个碎片被分配到一个设备上。这相当于沿批次(Batch)维度对训练过程进行并行化。每个设备将持有一个完整的模型副本,并在分配的数据集碎片上进行训练。在反向传播之后,模型的梯度将会聚合(All Reduce),以便在不同设备上的模型参数能够保持同步。典型的数据并行实现:PyTorch DDP。

2024-08-26 11:34:21 1913

原创 分布式训练通信原语

Parameter Server架构(PS模式)由server节点和worker节点组成server节点的主要功能是初始化和保存模型参数、接受worker节点计算出的局部梯度、汇总计算全局梯度,并更新模型参数(DP)worker节点的主要功能是各自保存部分训练数据,初始化模型,从server节点拉取最新的模型参数(pull),再读取参数,根据训练数据计算局部梯度,上传给server节点(push)。

2024-08-26 11:33:15 1228

原创 markdown_demo

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2024-08-07 17:24:27 1047

原创 python @property

以代码示例的方法介绍@property属性使用@property属性class Boy(object): def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, new_name): self._name = new_

2021-11-24 16:29:42 660

原创 pandas写入数据

a = ['a.jpg', 'c.jpg', 'b.jpg']b = [1,2,3]out_dict = {'image' : a, 'label' : b}print(out_dict)df_one = pd.DataFrame(out_dict)print(df_one)df_two = df_one.sort_values('image')print(df_two)df_two.to_csv('./demo.csv', index=True, header=True)#####.

2021-11-04 17:56:29 395

原创 git通过tokens进行提交

!git add .!git commit -m "..."!git status!git remote set-url origin "https://<username>:<password(token)>@github.com/<username>/<repo_name>"!git push origin <branch_name>

2021-10-08 14:20:33 503

原创 python总结知识点

python类构造函数作为另个函数的__init__参数。class MyOdlHttp(): # username = '' # password = '' def __init__(self, username, password): self.haha = username self.passw = password print(username) print(self.haha) my_old_http = MyOdlHttp('admin.

2021-09-12 15:21:22 172

原创 python广度、深度(递归 非递归)优先遍历

class graph: def __init__(self,value): self.value=value self.neighbors=None# 图的广度优先遍历# 1.利用队列实现# 2.从源节点开始依次按照宽度进队列,然后弹出# 3.每弹出一个节点,就把该节点所有没有进过队列的邻接点放入队列# 4.直到队列变空from queue import Queuedef bfs(node): if node is None: .

2021-08-08 01:16:27 1037

原创 C++刷题学习记录一

#define _CRT_SECURE_NO_WARNINGS#include<cstdio>#include<vector>#include <iostream>#include<unordered_map>using namespace std;class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map<in.

2021-07-30 23:46:32 221

原创 剑指offer第一题赋值运算符函数

#define _CRT_SECURE_NO_WARNINGS#include<cstring>#include<cstdio>#include<iostream>class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(); CMyString& operator = (const C.

2021-07-30 19:10:09 87

原创 C++ STL

通常认为,STL是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。表 1 STL 组成结构 STL的组成 含义 容器 一些封装数据结构的模板类,例如 vector 向量容器、list 列表容器等。 算法 STL 提供了非常多(大约 100 个)的数据结构算法,它们都被设计成一个个的模板函数,这些算法在 std 命名空间中定义,其中大部分算法都包含在头文件 <algori...

2021-07-28 00:37:48 87

原创 C++11

在 C++11 中增加了返回类型后置(trailing-return-type,又称跟踪返回类型)语法,将 decltype 和 auto 结合起来完成返回值类型的推导。C++11 支持为函数模板中的参数设置默认值,在实际使用过程中,我们可以选择使用默认值,也可以尝试由编译器自行推导得到,还可以亲自指定各个模板参数的类型。C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。C++11 标准中,建议将 con

2021-07-26 23:16:24 169

原创 C++异常

程序的错误大致可以分为三种,分别是语法错误、逻辑错误和运行时错误:语法错误在编译和链接阶段就能发现,只有 100% 符合语法规则的代码才能生成可执行程序。语法错误是最容易发现、最容易定位、最容易排除的错误,程序员最不需要担心的就是这种错误。逻辑错误是说我们编写的代码思路有问题,不能够达到最终的目标,这种错误可以通过调试来解决。运行时错误是指程序在运行期间发生的错误,例如除数为 0、内存分配失败、数组越界、文件不存在等。C++ 异常(Exception)机制就是为解决运行时错误而引入的。

2021-07-26 20:26:08 239

原创 C++模板

所谓函数模板,实际上是建立一个通用函数,它所用到的数据的类型(包括返回值类型、形参类型、局部变量类型)可以不具体指定,而是用一个虚拟的类型来代替(实际上是用一个标识符来占位),等发生函数调用时再根据传入的实参来逆推出真正的类型。这个通用函数就称为函数模板(Function Template)。#include <iostream>using namespace std;template<typename T> void Swap(T *a, T *b){ T temp

2021-07-26 19:59:46 93

原创 C++运算符重载

#include <iostream>#include <cmath>using namespace std;//复数类class Complex{public: //构造函数 Complex(double real = 0.0, double imag = 0.0): m_real(real), m_imag(imag){ }public: //运算符重载 //以全局函数的形式重载 friend Complex operator+(const

2021-07-24 21:03:28 182

原创 C++多态与虚函数

“多态(polymorphism)”指的是同一名字的事物可以完成不同的功能。多态可以分为编译时的多态和运行时的多态。前者主要是指函数的重载(包括运算符的重载)、对重载函数的调用,在编译时就能根据实参确定应该调用哪个函数,因此叫编译时的多态;而后者则和继承、虚函数等概念有关,是本章要讲述的内容。本教程后面提及的多态都是指运行时的多态。#include <iostream>using namespace std;//基类Peopleclass People{public: Peop

2021-07-24 19:46:44 87

原创 C++继承和派生

protected 成员和 private 成员类似,也不能通过对象访问。但是当存在继承关系时,protected 和 private 就不一样了:基类中的 protected 成员可以在派生类中使用,而基类中的 private 成员不能在派生类中使用。如果希望基类的成员既不向外暴露(不能通过对象访问),还能在派生类中使用,那么只能声明为 protected。下表汇总了不同继承方式对不同属性的成员的影响结果继承方式/基类成员public成员protected成员private成员

2021-07-24 18:37:26 131

原创 C++引用

引用的定义方式类似于指针,只是用&取代了*,语法格式为:type &name = data;type 是被引用的数据的类型,name 是引用的名称,data 是被引用的数据。引用必须在定义的同时初始化,并且以后也要从一而终,不能再引用其它数据,这有点类似于常量(const 变量)。如果不希望通过引用来修改原始的数据,那么可以在定义时添加 const 限制,形式为:const type &name = value;也可以是:type const &name =

2021-07-24 15:39:03 594

原创 C++类和对象

#include <iostream>using namespace std;//类通常定义在函数外面class Student{public: //类包含的变量 char *name; int age; float score; //类包含的函数 void say(){ cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<e

2021-07-24 14:57:45 245 2

原创 C语言头文件

在 Linux 下使用 GCC 来编译,使用最简单的$gcc demo.c命令,就可以在当前目录下看到 a.out。事实上,从源代码生成可执行文件可以分为四个步骤,分别是预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。下图是 GCC 生成 a.out 的过程:...

2021-07-21 23:47:42 181 1

原创 C语言内存

对于全局变量,GCC在 Debug 和 Release 模式下都会进行内存对齐,而VS只有在 Release 模式下才会进行对齐。而对于局部变量,GCC和VS都不会进行对齐,不管是Debug模式还是Release模式。现代计算机都使用分页(Paging)的方式对虚拟地址空间和物理地址空间进行分割和映射,以减小换入换出的粒度,提高程序运行效率。分页(Paging)的思想是指把地址空间人为地分成大小相等(并且固定)的若干份,这样的一份称为一页,就像一本书由很多页面组成,每个页面的大小相等。如此,就能够以页为

2021-07-21 18:09:41 87

原创 C++基础知识

C++ 支持面向过程编程、面向对象编程和泛型编程,而C语言仅支持面向过程编程。就面向过程编程而言,C++ 和C几乎是一样的,所以学习了C语言,也就学习了 C++ 的一半,不需要从头再来。#include <stdio.h>//通过class关键字类定义类class Student {public: //类包含的变量 const char *name; int age; float score; //类包含的函数 void say() { printf("%s的年龄是 %d

2021-07-19 22:38:45 107

原创 C++语言快速排序

#include<iostream>using namespace std;void quickSort(int a[], int, int);int main(){ int array[] = { 34,65,12,43,67,5,78,10,3,70,43,43,65 }, k; int len = sizeof(array) / sizeof(int); cout << "The orginal arrayare:" << endl; for (k

2021-07-19 18:58:39 107

原创 python __getitem__()函数

class Fib(object): def __getitem__(self, n): a, b = 1, 1 for x in range(n): a, b = b, a + b return af = Fib()f[0] #输出:1print(f[2])2getitem()传入的参数可能是一个int,也可能是一个切片对象slice,因此需要做判断。如果把对象看成dict,getite

2021-07-14 17:48:59 852

原创 C语言文件

常见硬件设备所对应的文件文件硬件设备stdin标准输入文件,一般指键盘;scanf()、getchar() 等函数默认从 stdin 获取输入。stdout标准输出文件,一般指显示器;printf()、putchar() 等函数默认向 stdout 输出数据。stderr标准错误文件,一般指显示器;perror() 等函数默认向 stderr 输出数据(后续会讲到)。stdprn标准打印文件,一般指打印机。文件是数据源的一种,除了文件,还有数据库、网络

2021-07-12 20:11:45 121

原创 C语言typedef,const和随机数

typedef#include <stdio.h>typedef char (*PTR_TO_ARR)[30];typedef int (*PTR_TO_FUNC)(int, int);int max(int a, int b){ return a>b ? a : b;}char str[3][30] = { "http://c.biancheng.net", "C语言中文网", "C-Language"};int main(){ P

2021-07-12 16:39:52 215

原创 C语言结构体

像 int、float、char等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。include <stdio.h>int main(){ struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 .

2021-07-12 16:01:08 293

原创 C语言指针(二)

include <stdio.h>int main(){ int a[6] = {0, 1, 2, 3, 4, 5}; int *p = a; int len_a = sizeof(a) / sizeof(int); int len_p = sizeof(p) / sizeof(int); printf("len_a = %d, len_p = %d\n", len_a, len_p); return 0;}运行结果:len_a = 6,

2021-07-10 19:05:25 347

原创 C语言指针(一)

我们将内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。CPU访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。int a .

2021-07-09 17:56:10 161

原创 git常用命令总结笔记

实践中经常用到的git命令:git config --global user.email "email"git config --global user.name "username"git add .git commit -m "提交信息"git push -u origin master#本地git仓库与远程仓库关联(两种方式:1.https方式;2.SSL方式)git remote add origin https://github.com/JianhaoChung/DGL_GCNER.

2021-07-02 22:55:26 131

原创 colab通过ssh连接github

命令如下:!git config --global user.email "email"!git config --global user.name "username"#!ssh-keygen -t rsa -b 4096 -C “<user-name>@github.com”!cat /content/drive/MyDrive/myfile/colab_ssh/.ssh/id_rsa.pub #填入github的!ssh-keyscan github.com >> "

2021-07-02 22:32:01 536

空空如也

空空如也

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

TA关注的人

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