“攻击” 5步走 1.社会工程,获取特定目标(比如已知qq号码)或非特定目标(机会主义者要控制一批机器当僵尸机) 2.扫描,获取目标漏洞信息 3.入侵 4.拖库或潜伏监控 5.消除痕迹
“防范” 1.不要泄露社工信息 2.打补丁堵漏洞 3.观察网络流量,识别正常、异常、攻击,以及拖库等行为(snort,mydlp) 4.对流量载荷中可能的泄露进行检查(ntop一般不关心载荷,用squid+sslbump+icap) 5.日常性的工作,比如勤于观察日志、关心技术论坛和安全新闻等
“网络”系统 1.访问控制,除了os、app登录等,还有iptables、selinux等 2.传输加密,https,vpn,ssh 3.掩盖IP来源,各种proxy和跳转,典型就是vps、tor、i2p 4.对流量进行其他混淆,比如使用ping载荷、dns载荷等 5.其他,比如利用Botnet、APT、供应链攻击等
网络攻击的深层技术(脱离脚本小子的低级趣味) 1.内存安全,以缓冲区溢出为代表,各种exploit和shellcode基本都是这一类 2.二进制分析和逆向,各种平台 ...
4.14我们组的项目是基于大模型的知识问答教育系统,我在前期的任务是数据采集和处理清洗,以便于构建数据集训练大模型。
基于调查研究,我对于数据收集的关键点做出了以下归纳。
准确性:确保数据来源可靠,内容准确无误。错误的信息会导致模型输出错误答案,影响用户体验和教育效果。
更新性:确保数据是最新的,特别是对于动态变化的领域,如科技、法律等。
教育层次:覆盖从基础教育到高等教育的内容,适应不同学习阶段的用户需求。
结构化数据:优先选择结构化数据(如数据库、表格),便于处理和分析。
隐私保护:确保用户数据的匿名化处理,避免泄露个人信息。
合规性:遵守数据保护法律法规,如GDPR等,确保数据收集和使用过程中的合法合规性。
在开始的时候,我准备从百度百科、csdn等知识网站上收集数据,但是我发现这些网站上的数据质量良莠不齐,有的甚至有常识性错误,难以在爬取的时候进行分辨;并且这些数据的格式不一致,在后期处理的时候会造成麻烦,于是放弃。
然后我找到了Hugging Face 的 Datasets 库,这个库提供了大量预构建的数据集,涵盖了广泛的任务和领域,包括文本分类、情感分析、机 ...
其他队友的大模型训练和前后端开发工作基本完成了,于是我进行了测试。
功能测试功能测试的主要目的是验证网站的核心功能是否按预期工作,包括用户交互、数据输入、页面跳转和功能性操作。
测试过程中,主要集中在以下几个方面:
- 验证链接跳转是否正确
- 输入验证和表单提交
- 功能性测试,如搜索、提问、用户登录、密码找回等
测试环境
操作系统:Windows 10
浏览器:Microsoft Edge,火狐,Chrome
自动化测试工具:Selenium WebDriver, JUnit
自动化测试
对于某些复杂的用例,我用了自动化测试以便减轻人工工作量
测试结果
绝大多数功能点按照预期工作,但发现了包括链接跳转错误、输入验证不严格的问题。
Bug 列表
1.输入问题时如果小于一定长度时提交会没有反应,而不是给出报错
2.输入问题时如果超出一定长度时提交会没有反应,而不是给出报错
3.前端路由跳转有时会失效
在反应给开发同学之后,修改了这些bug
性能测试虽然网站不进行上线同时供多人使用,但性能测试也是测试的重要一环。
评估系统能力:性能测试通过模拟实际使用情况,对系统进行压力测试,以 ...
第一章1 软件测试学科的发展1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。1978~1983年,以破坏性检测为导向,测试是为了找到软件中的错误(逆向思维)。1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。
2 正向测试与反向测试的定义,关系Bill Hetzel博士(正向思维的代表):
软件测试就是为程序或系统能够按预期设想运行而建立信心的过程。
软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作
Glenford J. Myers (反向思维的代表):
测试是为了证明程序有错,而不是证明程序无错误
一个好的测试用例是在于它能发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试
3 从经济视角认知软件测试测试的经济观点就是以最小的代价获得最高的软件产品质量。经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损 ...
转换为Alpaca数据集和Json格式用于模型训练和微调之前得到了csv格式的数据集,而模型训练和微调需要用到json格式,于是进行转换。下面是代码:
12345678910111213141516171819import pandas as pdimport json# 读取CSV文件data = pd.read_csv('cleaned_translated_train.csv')# 转换数据为JSON格式,每一行变成一个字典json_data = [ { "instruction": row["question"], "input": "", "output": row["answer"] } for index, row in data.iterrows()]# 将JSON数据保存到文件with open('data_for_training.json ...
.ssh/authorized_keys就是为了让两个 Linux 机器之间使用 ssh 不需要用户名和密码。采用了数字签名 RSA 或者 DSA 来完成这个操作。
.ssh/id_rsa是SSH(Secure Shell)协议使用的默认私钥文件。当连接到支持SSH的远程服务器或系统时,id_rsa文件用于SSH身份验证。 它包含SSH密钥对的私钥部分。相应的公钥(通常存储在id_rsa.pub文件中)被添加到远程服务器上的~/.ssh/authorized_keys文件中,以允许使用关联的私钥进行身份验证。
.ssh/id_rsa.pub是与用于SSH身份验证的私钥文件(id_rsa)对应的公钥文件。它包含可以与支持SSH的远程服务器或系统共享的加密密钥。当您想要通过远程服务器进行身份验证时,通常需要将您的公钥添加到服务器上的~/.ssh/authorized_keys文件中。这允许服务器通过将您在SSH连接期间提供的公钥与存储在authorized_keys文件中的公钥进行匹配来验证您的身份。
与应保持安全且不可 ...
去除过短或者过长训练数据在机器学习中,去除过短或过长的训练数据通常是为了提高模型的性能和稳定性。以下是具体的原因:
质量控制
过短的文本:
可能包含太少的信息,无法提供足够的上下文。
可能是噪音或无用的内容,如单个字符或单词。
过长的文本:
可能包含冗余信息或噪音。
处理起来资源消耗较大,增加计算开销。
计算效率
过长的文本:
需要更多的计算资源和时间。
可能导致内存不足或训练时间过长。
模型训练稳定性
过短的文本:
可能导致模型过拟合,无法泛化到更长或更复杂的句子。
模型可能学不到有用的特征。
过长的文本:
可能导致模型在训练时遇到梯度消失或爆炸的问题。
增加模型的复杂性,可能需要更复杂的架构来处理。
数据均衡性
去除过短或过长的文本有助于确保训练数据的长度分布更加均衡,避免模型对特定长度的文本过度拟合。
一致性和可解释性
保持数据长度在一个合理的范围内,可以提高模型预测结果的一致性和可解释性。
下面是我去除过短或者过长训练数据的代码
1234567891011import pandas as pd# 读取CSV文件data = pd.read ...
数据采集后的文本并不全是中文的,这很正常。我下一步对这部分文本数据进行了翻译,实现方法是通过DeepL这个工具api用python代码实现。不过要订阅申请DeepL的api密钥。
翻译数据结构知识数据:
12345678910111213141516171819202122232425262728293031323334353637import pandas as pdimport deepl# DeepL API认证密钥auth_key = ""translator = deepl.Translator(auth_key)# 读取XLSX文件data = pd.read_csv('ds.xlsx')# 定义一个标志位,用于指示是否停止翻译stop_translation = False# 翻译文本的函数,从英文翻译成中文def translate_to_chinese(text): global stop_translation if stop_translation: return text # 如果已经出现异常, ...
前面从广义数据的角度对数据集进行了处理,但是没有考虑到大模型的角度。在和负责大模型部分的同学沟通后,进一步对数据进行了处理,使其更贴合大规模预训练模型。通过一番查找对比,我在这里选择了llm_corpus_quality这个项目。
llm_corpus_quality集成了包含清洗、敏感词过滤、广告词过滤、语料质量自动评估等功能在内的多个数据处理工具与算法,为中文AI大模型提供安全可信的主流数据。项目采用java实现,完整项目见https://github.com/jiangnanboy/llm_corpus_quality
llm_corpus_quality支持以下特性:
规则清洗
敏感词过滤
广告过滤
去重
质量评估
处理流程如下
大模型训练语料清洗流程,共包括4个阶段5个模块:
语料清洗规则过滤:通常经过格式转换后的json文件仍存在很多问题,不能直接用于构建训练数据集。通常会以句子或篇章作为过滤单位,通过检测句子或篇章内是否含有大量的怪异符号、是否存在html网页标签等来判断文本是否为合格文本。
敏感词过滤器:利用自动机,过滤色情、赌博、部分低质量广告等内容的文本。
...
在大模型训练中,数据集划分、数据增强和数据可视化是至关重要的步骤,确保模型训练的有效性、可靠性和可解释性。下面是对这三个方面的具体实现方法的详细说明。
数据集划分:合理划分训练、验证和测试集
比例划分:
常用的划分比例是70%用于训练,15%用于验证,15%用于测试。具体比例可以根据数据集的规模和任务的需求进行调整。
随机划分:
使用随机数生成器确保数据集划分的随机性,避免样本顺序导致的偏差。
分层抽样:
在分类任务中,确保各类样本在训练、验证和测试集中的比例一致,可以使用分层抽样。
时间序列数据划分:
在时间序列数据中,按照时间顺序划分数据,确保训练集早于验证集,验证集早于测试集。
这里我使用随机划分,使用sklearn.model_selection.train_test_split函数实现:
1234from sklearn.model_selection import train_test_splittrain_data, test_data = train_test_split(data, test_size=0.3, random_state=42)train ...