自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微调实操一: 增量预训练(Pretraining)

《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代码比较难以理解,而且模型只能从hugging face上下载,对于一些国内服务器无法访问,我重构了代码,让训练代码更有可读性,并参考LLAMAFactory的项目,增加了modelscope上下载模型,轻松在国内服务器运行.

2024-02-02 21:34:54 1166

原创 光杆司令如何部署大模型?

之前有写过一篇《平民如何体验一把大模型知识库》里面有提到使用阿里的免费GPU进行部署,但是免费总有到头的一天, 今天教大家如何使用在线模型管理自己的知识库, 同样是基于ChatChat的开源代码来讲解. 随着大模型竞争的白热化,基本很多大模型都开放的api方式,让大家自己定义AI agent的应用.有了开放的api,让你没有显卡的电脑也能感受一下大模型管理知识库,进行垂直领域知识的检索和问答.算是自己初步玩一下AI agent。vim configs/model_config.py # 修改模型配置变量。

2024-02-01 12:27:50 287

原创 微调入门篇:大模型微调的理论学习

之前在《大模型这块蛋糕,想吃吗》介绍了普通人如何搭上大模型这块列车, 其中有一个就是模型微调,这个也是未来很多IT公司需要发力的方向,以及在《垂直领域大模型的应用更亲民》中论述了为什么微调适合大家,以及微调有什么价值? 作为小程序猿在开始进行微调实操之前,我们先了解一下微调大模型有什么方法和技术吗?

2024-01-30 21:18:34 735

原创 互联网大厂裁员归裁员,除夕放假还是人性

虽然除夕当天名义上不放假,但鼓励各单位和机构根据实际情况来灵活安排。同时高速公路除夕免费,实质上就是创造条件给老百姓多放一天假,“是一次非常巧妙的探索”. 有点“2 月 4 日(星期日)、2 月 18 日(星期日)上班。鼓励各单位结合带薪年休假等制度落实,安排职工在除夕(2 月 9 日)休息.互联网大厂裁员归裁员,对放假这件事还是有人性的,我们也无需过分羡慕,毕竟辛苦一年了, 他们可以早点回家团圆.从多个渠道了解,字节跳动、腾讯、美团、新浪、网易、滴滴等都已经内部宣布除夕放假。

2024-01-26 14:53:16 175

原创 程序猿教你白嫖GPT4

无论您是否具有编程经验,都可以让您快速创建各种类型的聊天机器人并将其部署在不同的社交平台和消息应用程序上,Coze这个平台可以根据需求创建无数个机器人,这些机器人是为了不同的场景而存在,比如可以提示词、写作、绘画 、体育、旅游等不同类型的机器人。机器人本身是一个单独的角色,它是大模型核心,将我们的需求拆成很多独立的部分,每个部分调用合适的组件来实现更强大的功能,提供 plugins、knowledge、workflows等组件的接入。(1)、将数十页的产品文档导入知识库,几分钟内,生成您的专属产品顾问。

2024-01-25 19:06:59 677

原创 垂直领域大模型的应用更亲民

虽然2023年以来几乎很多公司都发出了自己的通用大模型,但是都还停留在“开放闲聊”阶段,这种泛娱乐的方式带来生产率是有限的。在之前的文章有介绍过: 普通人(包括程序员)怎么follow大模型的发展和如何成为提示词工程师.通用大模型类似ChatGPT等,一般公司和程序员是无法超越。chatgpt的成功是属于幸存者偏差,它的成功,不一定代表所有人都能成功,即使成功也不一定超越过。SFT: 通过SFT可以激发大模型理解领域内的各种问题并进行回答的能力(在有召回知识的基础上)。模型对特定问题的答案。

2024-01-20 12:35:59 453

原创 大模型这块蛋糕,想吃吗?

普通人怎么关联大模型1、知道、学会用大模型工具2、应用垂直领域,在某个领域超越通用大模型3、AI Agent的app时代

2024-01-18 09:36:26 777

原创 年终将至,学会年终汇报了没

珍惜每次和领导汇报的机会,让领导深入了解你。让你有发光的机会。如何避免错误的年终汇报,让自己的辛苦不会付之东流,成为职场必修课之一

2024-01-18 09:29:58 348

原创 平民如何体验一把大模型知识库

选择镜像的时候,不要选择自带的官方镜像,而是要使用https://github.com/chatchat-space/Langchain-Chatchat中推荐的容器镜像,因为这个开源代码对软件(特别是CUDA版本有要求)注意:不用就停止掉,不然浪费你的资源额度,好像有15天的过期时间,如果15内不启动这个服务器,磁盘会被回收的,数据都没有了,就要重新进行下面安装步骤。2、部署的硬件条件: 如果自己购买,绝对是一笔不小的开支, 还好有其他大公司的慷慨解囊.1、准备好阿里云的GPU资源(时间有点长)

2023-11-21 18:12:58 168

原创 【AIGC】认识AIGC

从这些文章对比下,个人学习的话,如果是要了解算法本事源码和原理,可以从Alpaca和Open Assistant模型去学习.

2023-09-24 09:57:14 105

原创 Java基础知识

出来混,要学习java,本人原先具有C++的功力,所以学习java并不觉得难,但是还有一些特性难以时刻记住,所以在此做一些笔记,方便以后快速查询。注解(元数据) 第一次接触注解的概念,先了解一下注解的使用地方生成文档,这个是最常见的功能,常用的注解有@param @return @see跟踪代码的依赖性,实现替代配置文件功能在编译时进行格式检查。如@override 放在方法前,如果你这个方

2017-08-10 23:42:42 458 1

原创 Linux 虚拟内存机制

华为面试官问了我一个问题就是关于Linux虚拟内存机制,虽然我多少是回答上来,感觉好久没看操作系统的我是时候将其拿起来重温一遍 。 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构。Linux内存管理采用的是页式管理,使用的是多级页表,动态地址转换机构与主存、辅存共同实现虚拟内存一个新进程建立的时候,将会建立起自己的内存空间,此进程的数据,代码等从磁盘拷贝到自己的进程空间

2016-08-09 21:31:01 11661

原创 触发器

触发器的作用是在执行insert、delete和update命令之前或之后自动调用sql命令或存储过程,最多一个表可以建立6个触发器,因为触发器的类型主要分为: 1.Before2.After before 和 after代表触发器发生的时间是在每行操作的之前还是之后。其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而

2016-08-05 13:50:36 1486

原创 Go安装

Go的三种安装方式Go源码安装:这是一种标准的软件安装方式Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合快速安装,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安装方式适合那些熟悉相应系统的用户。最后,

2016-08-02 16:46:31 12639

原创 Go语言的特性

关于特性丢失为了简化设计,不支持函数重载和操作符重载为了避免c/C++开发中的一些bug和混乱,不支持隐式转换Go语言通过另一种途径实现面向对象设计放弃了类和类型的继承尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型不支持动态加载代码 不支持动态链接库不支持泛型通过recover和panic来替代异常机制不支持断言不支持静态变量Go编译器的知识 目前有2

2016-08-02 16:45:07 800

原创 golang编译器的准备

????????????????????????????????????,???????????????http??,??????http??,????????????,????????????,?????,????????????????,????????????????????????????????,?????,?????Vegeta??? Vegeta ????Go?????????

2016-08-01 13:41:40 734

原创 第一讲 go 语言简介

没有停止学习脚步的程序员,这篇博客这要介绍为什么要学习go语言,go语言是一种新的语言,一种并发的,带垃圾回收的、快速编译的语言 不仅就有上述特点,更重要的是,在我面试几家公司之后,面试官反复提到如果会go语言的话会更好。(这样学习的动力马上就有)Go有什么优势可直接编译成机器码,不依赖其他库,glibc的版本有一定的要求,部署就是扔一个文件上去就完成。Go为软件构造提供了一种模型,它使依赖分

2016-07-28 15:25:39 503

原创 Linux 下几款程序内存泄漏检查工具

写这篇博客的原因呢是因为自己在编写基于Nginx磁盘缓存管理程序,目前已经进入测试阶段,关于这个程序的测试分为几个主要步骤:1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西)2.程序的健硕性如何(服务器任何程序的基本要求就是要满足高并发的要求,也就是说,如果达不到这个基本要求,程序并并不能成为服务器

2016-07-23 10:15:06 34108 1

原创 静态库和动态库

有一篇博客专门介绍程序编译过程,在程序编译步骤中有一个很重要的步骤就是链接,这篇博客主要比较静态库和动态库的差别。 在了解两者的区别,我们先学习一下基础知识库是什么库就是写好的,现有的,成熟的可以 复用的代码,现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都是从零开始,本质上库 就是一种可执行代码的二进制形式,可以被操作系统载入内存 执行,库有两种:静态库(.a,.lib)和

2016-07-21 14:33:30 476

原创 C 程序编译过程

通常我们使用gcc来生成可执行程序,命令为: gcc hello.c,默认生成可执行文件a.out,其中经过下面几个步骤:预处理(processing)编译(compilation)汇编 (Assembly)链接(Linking) 接下来将介绍每个步骤相应都做了那些工作预处理(preprocessing)将所有的#define删除,并且展开所有的宏定义处理所有的条件编译指令,比如#

2016-07-21 14:27:26 703

原创 C++ 中的sprintf和snprintf 函数的区别

在编程过程中经常有字符串转数字和数字转字符串,相应的函数大家最经常见到可能是atoi和itoa。但是itoa不是标准库里面的函数,所以接下来介绍下面两个函数sprintf和snprintf函数,并将它们比较一番。最近写的博客目前就是一些自己在实现基于 Nginx磁盘缓存的一些知识总结sprintf()函数用法int sprintf(char *string,char *format,arg_lis

2016-07-21 10:59:31 6911

原创 Nginx 模块自主开发十: 设计一个基于NGINX 的缓存服务

计算机不仅需要对计算机理论有一定的要求,同时要学以致用,这篇博客将结合公司给我的一个问题,我自主设计一个初步的方案 ,如何 有什么bug或是想法,可以提出来,我一直秉承一个思想:good idea worth spreading.只有将自己的学习计划放在互联网上,才会进步得更快。问题 将磁盘文件分块加载到内存,一般来说磁盘文件远大于内存空间,所以将磁盘文件分块,部分读入内存,系统预分配内存空间

2016-07-06 09:10:30 674 3

原创 Nginx 模块自主开发八: 总结 Nginx框架的流程

前面两篇博客:Nginx 模块自主开发六:源码剖析配置文件解析过程和 Nginx 模块自主开发七:源码剖析整个Nginx框架从源码层面上解析Nginx框架,这样导致太过于 细节,所以本篇博客将带领你系统上过一遍Nginx框架Nginx主框架的流程当启动Nginx程序时候,Nginx从入口函数Main()开始执行,检查命令行参数和环境变量,初始化ngx_modules数组,然后进入初始化函数ngx_

2016-07-01 15:16:06 1008

原创 C++ 类型转换运算符

C语言存在两种类型转换(隐式转换,显式转换) 隐式转换,是针对不同类型之间的赋值和运算,函数调用传递参数 这些的转换都是由编译器自动完成char ch; int i=ch; 显式转换 由程序员在变量前面添加型转换 char *pc=(char *)pb void *ps=(void*)paC++ 中的类型转换* 通过上述的两种方式,C语言大部分的类型转换都可以顺利进行,C++继承

2016-07-01 09:20:42 1073

原创 Nginx 模块自主开发七:源码剖析整个Nginx框架

在博客提到的Nginx 模块自主开发四: 模块数据结构一个很重要的数据结构ngx_module_s,所有的模块都是用这个结构体来表示。ngx_module_t结构体 模块又分为ngx_core_module_t和ngx_xxx_module_t,而在ngx_module_t中会包含这两个结构,只不过不同类的模块包含不同的结构,一般会 用ctx表示,ngx_module_t又用type这个域用来表

2016-06-30 11:40:51 12327 11

原创 Nginx 模块自主开发六:源码剖析配置文件解析过程

Nginx源码实现有一个很好的优点就是模块化,有点像面向对象语言的设计模式,实现“高内聚,松耦合”,这篇博客主要讲解模块的共有流程 集中在ngx_cycle.c、 ngx_process.c、 ngx_process_cycle.c 和 ngx_event.c代码中。 共有流程开始于解析 nginx 配置,这个过程集中在 ngx_init_cycle 函数中。 ngx_init_cy

2016-06-29 13:43:23 7967

原创 从流程解析Nginx对 Native aio支持

强烈建议这篇博客和从源码解析Nginx对 Native aio支持一起阅读异步I/O 异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你(通过信号,或者其他异步方式通知,这时候,操作系统已经帮你完成IO操作,具体来说就是你那个作为传入参数的的buffer的指针所指向的空间已经读到了数据或者你的buffer的数据已经写出去了)非阻塞I/O 非阻塞IO就是你要通过某种方式不定

2016-06-27 16:12:18 2756

原创 从源码解析Nginx对 Native aio支持

使用异步I/O大大提高应用程序的性能 linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开始的。下面将针对 同步和异步模型,以及阻塞和非阻塞的模型进行介绍。而native aio的优点就是能够同时提交多个io请求给内核,然后直接由内核的io调度算法去处理这些请求(direct

2016-06-27 11:43:59 6784

原创 C++中的重载,重写, 重定义 差别

一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)返回值可以不同;二、重写(也称为覆盖 override)是指派生类重新定义基类的虚函数,特征是: (1)不在同一个作用域(分别位于派生类与基类) ; (

2016-06-26 21:15:38 2072

原创 hadoop之Hbase简介

HBASE的发展从bigtable讲起bigtable 是一个分布式存储系统利用mapreduce分布式并行计算模型处理海量数据使用分布式文系统GFS作为底层数据存储采用Chubby提供协同服务管理扩展到PB级别的数据和上千台机器,具有广泛应用性, 可扩展性,高性能和高应用的特点很多项目都存储在BigTable中,包括搜索、财经、地图、社交网络Orkut、视频共享网站YouTube。HB

2016-06-26 10:18:11 1017

原创 MapReduce 之一:MapReduce体系结构

MapReduce是一种分布式并行编程。分布式程序运行在大规模计算机集群上,可以并行执行大规模数据任务,从而获得海量的计算能力。MapReduce相对传统的并行计算框架 传统并行计算框架 MapReduce 集群架构容错性 共享式(共享内存/g共享存储).容错性差 硬件/价格/扩展性 刀片服务器、高速网、SAN、价格贵、扩展性差 编程/学习难度 难 适用场景 实

2016-06-25 14:11:03 4263

原创 Nginx 缓存机制 详解之二 缓存加载进程

上一篇博客已经详细讲解了缓存管理进程,接下来详细讲解缓存加载进程机制缓存加载进程机制ngx_cache_loader_process_handler函数 加载进程 和管理进程都是从函数ngx_cache_manager_process_cycle进入,只是接下来的流程函数不一样ngx_process_events_and_timers()->ngx_event_expire_timers()-

2016-06-24 19:05:48 1805

原创 Nginx 缓存机制 详解之一 缓存管理进程

Nginx缓存的基本思路就是利用请求的局部性原理,下次访问不再连接后端服务器。 Nginx是通过设置xxx_cache_path(比如proxy_cache_path),主要用来创建管理cache的共享 内存数据结构(红黑树和对列),另一个是xxx_cache主要 用来前面的参数创建内存空间。命令xxx_cache_path,会调用ngx_http_file_cache_set_slot函数

2016-06-24 18:12:22 11527

原创 Nginx 模块自主开发四: 模块数据结构

其中,ngx_module_s,这 个是 每个新的模块的定义struct ngx_module_s { /*ctx_index表示当前模块在这类模块中的序号。这个 成员常常是由管理模块的 一个Nginx核心模块设置的,对于所有的http模块而言,ctx_index是由核心模块ngx_http_module设置的,ctx_index非常重要,Nginx的模块化设计非常依赖各个模块的顺序*/

2016-06-24 11:07:44 1149

原创 Nginx 模块自主开发二:Nginx的类型命名封装

我们在看Nginx源代码的时候,看不到我们以前在写C语言的类型名称(比如int,char等),其实是Nginx为了跨平台习惯将一些 C语言的东西进行了封装,所以在编写自己的模块的 时候,建议尽量沿用Nginx的习惯。整型封装typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t;ngx_str_t 数据结构体

2016-06-23 14:29:49 772

原创 Nginx 模块自主开发一:开发前的了解

个人觉得要真正理解源码,如果 只停留在理论是远远不够,所以从现在起,要开始学习自己开发Nginx模块,再反过来理解Nginx本身代码。 Nginx 发送文件或转发 请求到其他服务器,有处理模块处理,但需要压缩或在服务端添加一些东西时,可以采用过滤模块,还是有一些核心模块主要负责管理网络层和应用层的 协议。如果处理模块把请求反向代理到后端的服务器,就变成另外一类的模块:负载均衡模块。负载均衡

2016-06-23 11:02:23 565 1

原创 Hbase实战二:编程实战

在安装后HbaseHbase实战一:安装配置,大家快乐的编程实践把1.利用Shell编程在HBase用create命令创建表 create 'student','Sname','Ssex','Sage','Sdept','course' 此时,即创建了一个“student”表,属性有:Sname,Ssex,Sage,Sdept,course。因为HBase的表中会有一个系统默认的属性作为主键,主

2016-06-22 21:45:51 724

原创 四:深入Nginx之事件和连接 (之三:连接池)

在Nginx中的connection就是对TCP连接的封装,包括连接的socket、读事件、写事件。利用Nginx封装的connection,我们 可以很方便的使用nginx处理与连接相关的事情 ,所以Nginx不仅可以作为 一个 web服务器,也可以邮件服务器,同时也可以利用nginx提供的connection,可以实现与任何后端服务打交道。 流程:结合一个tcp连接的生命周期,首先nginx

2016-06-22 16:56:21 4983 1

原创 epoll之二:epoll实战

epoll_create系统调用int epoll_create(int size);epoll_create返回 一个句柄,之后epoll的 使用都将依靠这个 句柄 来 标识,参数 size是告诉epoll所要处理的大致事件数目,不再使用epoll时,必须调用close 关闭这个句柄。size这个参数只是 告诉内核这个epoll对象会处理的事件大致数目,而不是 能够处理 的事件的最大个数epoll

2016-06-22 14:56:29 815

原创 epoll之一:epoll的原理

之前 我写过一篇博客IO复用之select poll epoll 函数,大概介绍了一下epoll和select,poll的一些区别,接下来要 从原理剖析epoll的强大的原因select和poll的工作机制在某一时刻,进程收集有事件连接时,大部分的连接是没有发生事件,但是 select和poll的工作机制,在 每次收集事件 的 时候,都把全部 的 连接的 套接字传给操作系统(这首先就是用户态内存到

2016-06-22 13:36:33 524

空空如也

空空如也

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

TA关注的人

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