- 博客(113)
- 资源 (6)
- 收藏
- 关注
原创 【设计模式】使用python 实践框架设计
软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着可以通过添加新代码来扩展功能,而不是修改现有代码。:优先使用对象组合而不是继承来达到复用的目的。组合可以提供更灵活的解决方案,并且避免了继承带来的复杂性。:高层模块不应该依赖于低层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。:一个类应该只有一个职责,意味着该类只应该有一个引起变化的原因。:子类对象应该能够替换父类对象而不影响程序的正确性。这要求子类必须完全实现父类的行为。:不应强迫一个类依赖于它不使用的接口。
2024-10-28 11:26:42
531
原创 【大模型】微调qwen2
如果报错 input should be a valid integer, got a number with a fractional part[type=int_from_float, xxxxxxx] 这种就是需要将deepspeed版本回退到0.14.4。之前qwen1.5给出了微调代码,但是后面的qwen系列似乎没有给出微调代码。试了一下,qwen1.5的微调代码也可以微调qwen2的模型。微调方法为:进入qwen1.5/example/sft下,用命令行运行以下命令。
2024-10-23 12:09:27
344
1
原创 【python】dataframe常用分组合并操作
根据doc_subject和fd_url将df分组,将fd_file_id和fd_file_name合并成一个元素,同一个分组内的元素组成一个list,这个list对应的新列命名为attachment_info。
2024-09-17 18:13:46
245
原创 【python数据处理】保存网页
直觉上处理网页信息,很多人会先将网页保存成HTML,然后做文本分析。但这样做是不够的,因为网页可能内嵌图片,这些图片在HTML里就是一处链接,离线处理时无法还原,相当于丢失了图片信息。路径一:将网页保存成mhtml,然后保存成图片。没有现成的工具可以做到这点,mhtml可以通过直接将后缀改成doc以doc的方式打开。路径二:将网页保存成mhtml,然后使用chromedriver保存成pdf,然后pdf再转图片。路径三:使用chromedriver直接将网页保存成pdf,然后pdf再转图片。
2024-09-17 12:06:22
606
原创 【git】代理相关
曾经设置过git的代理,现在提交代码到github报错“Failed to connect to 127.0.0.1 port 7890: Connection refused”,是由于设置了代理造成的,把代理取消就能解决。开启了翻墙代理工具,拉取代码时报错:fatal: 无法访问 xxxx : Failed to connect to github.com port 443: 连接超时。1,查看控制面板-网络与Internet-代理,看看现在计算机走的代理端口是哪个,比如我这次是7890。
2024-08-17 12:48:10
423
1
原创 【大模型】fineturn Q-wen
格式为jsonl,每行一条json,位于qwen1_5/examples/sft/data下,不妨命名为traindata.jsonl。(在qwen1_5/examples/sft路径下开个bash里运行finetune.sh,不要在jupyter里跑)然后在路径qwen1_5/examples/sft下修改finetun.sh, 内容如下。(在qwen1_5/examples/sft路径下建个inference.py)
2024-05-24 21:50:18
654
原创 【大模型】一个基座模型部署多个lora
vllm推出了一个很棒的功能,可以分别加载base模型和lora层,并且可以加载多个lora层,通过指定lora层名字确定到底调用哪一个。这种特性是非常有价值的:同时加载N套微调参数,这样做不会影响大模型原有能力,通过选择微调层可以提供给用户不同的专项微调能力,而且可以实现权限管控,防止敏感信息泄露,此外更多新微调能力的接入也非常方便。这对GPU的消耗也太高了吧!一种很直接的思路是,将多个微调任务整合起来,一次性lora微调多个任务,这样就只需要部署一个微调模型了。
2024-04-16 11:31:33
3111
原创 【大模型】部署lora微调后的LLM(以百川为例)
首先,大模型是补全模型,也就是说,我们输入一句话,模型接着这句话往下续写,补全后文。我们需要一个特殊的prompt,使得模型可以意识到,它续写的时候需要按照对话这种情境来续写。不同的模型有不同的prompt,真正的问题是需要包裹在prompt里面的。当我们需要使用其他加速框架部署大模型时,需要自己完成这一步:要么在传入问题时直接传prompt格式的问题,或者框架有模板接口可以按照自定义模板在后台自动化完成这种格式转化。如果想要多人同时使用大模型,那么需要使用专门的大模型推理加速框架,比如vllm,tgi。
2024-04-09 17:26:12
3751
1
原创 【大模型】finetune 百川2
将基础模型的generation_config.json拷贝到checkpoint_path下,然后执行如下代码即可。格式如下,放在微调脚本data_path对应的路径下。单轮可自行修改conversations。模型为baichuan_chat_13B_v1。
2024-02-21 17:35:09
508
原创 AUC的理解
ROC反映了:判成正例的样本,是由Y轴比例的正例(分母为所有正例个数),和X轴比例的负例(分母为所有负例个数)混合而成的。如果点位于对角线上,说明判成正例的样本里头,是由真正例和真负例以同等比例凑成的,实际哪个多取决于类别内样本数。因为把所有都判成负例了,纵轴一定是0,横轴也是0。当阈值取0时,一定在(1,1)点上,因为把所有都判成正例了,纵轴一定是1,横轴也是1。在进行学习器的比较时,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;纵轴表示:把正例判成正例的比例。
2023-09-11 23:05:43
498
原创 【python】运行程序时传入参数
argv第一个值是python文件名本身,第二个参数开始才是在运行时指定的参数。在启动程序的时候,需要指定运行端口。
2023-05-29 10:27:54
299
原创 【python】@property, @xx.setter, __set__
后面不管是__init__还是其他方法,再对age进行赋值时,都会因为修改了age_filter而触发age_filter里的__set__。注意,这个类变量名age要和传入age_filter的key_name一致,否则__set__里的修改不生效。__set__里的逻辑是,如果value大于self.threshold,那么用value对adult类实例中的self.key_name赋值,否则,用self.default_value对adult类实例中的self.key_name赋值。
2023-04-10 21:16:55
290
原创 【python】把函数作为参数
如果A方法需要参数,那么,把参数和A一起传入B,调用的时候直接用A()来调用A方法内容。方法名A当做入参传递给方法B,
2023-04-09 23:08:47
337
原创 【python】鸭子类型与工厂模式
首先定义了一种类型duck,只要类中实现了无输入值无返回值的方法walk,quack的,就是类型duck。这种特质,是通过继承Protocol实现的。python中,除了继承,不同的类可以通过它们是否有相同的方法而判断是否属于一个大类。“如果这个动物走得像鸭子,叫得像鸭子,那么它就是鸭子。choose_duck方法中,对d字典进行了静态类型声明,声明key是str,value是duck类型。通过这个字典,实现了工厂。这要用到typing里的Protocal,用到静态类型声明(就是在每个变量后加“:类型”)
2023-04-09 22:16:50
155
原创 【python】实现单例
类变量是指所有类的实例化对象都会共享的变量(可以通过类名调用,也可以通过实例对象名调用), 实例变量指只作用于调用实例的变量(只能通过实例对象名调用)。比如下面的例子,age是类对象,所有的A类实例都共享这个age,name则是每个实例各自独有的。self.__dict__是一个字典,记录了这个类实例所有的变量:变量值,现在它被设置成共享的类变量,那么所有的A实例里,变量名,变量值,都一样,等价于只有一个实例。python 的类中有两种变量:类变量,实例变量。
2023-04-09 21:30:49
153
原创 【前端】HTML\CSS\JavaScript,python后台入门
HTML,hyper text markup language,功能是给网页划分结构。网页一共有几大块,这一块里面包着哪几小块,小块里又包着什么元素...并且为重点结构命名(class=xxx, id=xxx),方便调整重点结构的外观样式,增加重点结构的逻辑。CSS,casecade sheet style,功能是调整网页结构的外观,布局。通过标签名、class名、id名和HTML中的结构对应起来。JavaScript,功能是捕捉用户在网页上的行为,实现自定义的逻辑,最终在网页上产生变化。通过DOM中的ge
2022-07-11 21:33:13
558
原创 【c++ primer】day 4, 表达式, ~P133
1,*ptr++,后置递增运算符的优先级要高于解引用运算符。因此这条表达式的意思实际上是 *(ptr++)。2,if (val == true)。这条表达式实际的效果是,true的值自动转换成1(同理,false自动转换成0),只有当val等于1的时候,判断才为真。3,...
2022-05-09 15:04:16
291
原创 【c++ primer】day 3, string\vector\数组, ~P117
1,字符常量“X”被认为是一个string, 'X'被认为是一个char。string中的每一个对象都是char, 当需要修改其中的值时,注意赋值对象为‘x’,不能是“x”。2,string之间可以通过+连接,string也可以通过+把char追加到尾部。...
2022-05-07 11:14:54
881
原创 【中文乱码】vim编辑器打开文件发现中文是乱码
查看一下文件编码vim 在命令模式下 :set fileencoding如果当前vim文件不是utf8编码,把vim文件转码。如果显示是latin-1编码,有可能中文原始编码是gbk,使用以下命令将iconv -f gbk -t utf8 input_file -o output_file...
2022-03-24 17:41:46
1016
原创 【python】向远方服务器请求结果
import jsonimport requestsdef call_botong_entity_small(query, k=5, url="http://gateway.botong.woa.com/ner"): query = str(query).replace(' ', '') json_data = { "text": query, "link_option": {"k": k}, } payload = json.dump.
2022-03-15 14:39:26
448
原创 工作中处理数据的一些小技巧
1,记录映射关系比如搜索query和docid最好不要用dict,因为可能存在多射的情况。用两个list,分别记录key值,value值。2,请求远方服务器结果,不要用bash连续curl,会导致请求失败(为啥?)用python的requests来搞。...
2022-03-15 11:04:13
1021
原创 数据治理梳理
数据治理是为了提高运营效率,减少运营成本,属于运营模式的转变。借助IT技术,将封闭的各个系统贯通,改造公司流程和IT。IT系统和数据有历史包袱,需要构建新的数据平台对原有系统进行颠覆性改造:一方面实现业务数据的自动采集,另一方面把原有各个独立数据库中的数据按照一定的标准进行汇聚和连接,再进行业务价值驱动的数字化转型。数据实时可视,海量业务自动,算法支撑决策...
2022-02-27 14:37:26
302
原创 windows 10下高效工作
原则:放弃鼠标,用键盘完成所有操作场景一:从当前的窗口切换到浏览器,查询信息。操作:Alt +Tab 切换到特定窗口 / Ctrl+n 打开新窗口F6 定位到输入栏(Alt+空格+X 最大化当前窗口)Ctrl + w 关闭当前标签叶...
2022-02-22 10:47:46
885
原创 【pytorch】数据读取
构建batch的函数接口是torch.utils.data.DataLoader,通过这个接口,可以实现迭代式地给出一个一个batch数据,送入模型。DataLoader需要提供四个比较关键的参数:dataset,batch_size,drop_last,collate_fn。其中dataset可以是torch.utils.data.Dataset的子类,也可以是torch.utils.data.TensorDataset,等等。最常见的是torch.utils.data.Dataset的子类,可以自由
2022-02-10 23:38:37
938
原创 【python】读取大规模训练集
可以先遍历一遍训练集,记录下每行训练数据的开始位置;读取训练集时,临时打开文件,定位到开始位置,读一行。outList = ["早安", "希望世界和平", "快乐开心每一天"]with open("tmp.txt", "w", encoding="utf8") as fout: for line in outList: fout.write(line+"\n")with open("tmp.txt", "r", encoding="utf8") as fin:
2022-01-19 15:14:03
904
原创 【PYTHON】反射
反射:给定str,创造str为名的变量。python中可以通过类的self.__dict__.update({str:value})来实现,创建的变量为self.xxx(与str对应)class A(object): def __init__(self, d): self.__dict__.update(d) d = {"a":10, "b":20}a = A(d)print(a.a)print(a.b)运行结果:1020...
2022-01-17 17:35:49
500
milvus离线安装包3
2022-11-17
milvus离线安装包2
2022-11-17
milvus离线安装包1
2022-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人