DistilQwen2:通义千问大模型的知识蒸馏实践

作者:岳元浩(顾城)、汪诚愚(熊兮)、严俊冰(玖烛)、黄俊(临在)

背景

在人工智能快速发展的今天,大语言模型已经成为了人工智能的研究热点。其中,通义千问(Qwen)大模型系列凭借其强大的语言理解和生成能力,吸引了开源社区越来越多的关注。随着这些模型的应用场景不断扩大,如何提高它们的运算效率,降低部署成本,成为了一项重要的课题。知识蒸馏作为一种有效的模型压缩技术,通过将大型模型的知识转移到较小的模型中,实现了在确保性能的前提下,显著降低了所需的计算资源和推理时长,从而使得模型在实际应用中变得更加灵活和高效。

为应对这一难题,我们提出了DistilQwen2,DistilQwen2是基于Qwen2大模型,通过知识蒸馏进行指令遵循效果增强的、参数较小的语言模型。 通过对Qwen大模型的深度剖析,指令数据的增强和优化,以及多种知识蒸馏算法的探索,我们将大语言模型的复杂知识以更简洁的形式传递给轻量级模型,实现了指令遵循效果的提升。此外,随着应用需求的多样化,轻量级模型在移动设备、边缘计算等资源受限的环境中显得尤为重要。DistilQwen2的研究旨在为开发更智能、更高效的自然语言处理应用提供技术支持,赋能更多开发者和企业通过技术创新实现商业价值。为了便于开发者和企业在实际应用中使用DistilQwen2蒸馏模型,我们在HuggingFace和ModelScope开源社区中将这一模型的Checkpoint进行开源。本文将介绍DistilQwen2的技术原理、效果评测,以及DistilQwen2在阿里云人工智能平台PAI上的使用方法,和在各开源社区的下载使用教程。

大模型知识蒸馏技术

本节中,我们主要描述DistilQwen2模型训练中使用的全流程知识蒸馏技术。其中,DistilQwen2模型蒸馏的算法框架如下图所示。

原始数据搜集

为了进行大模型蒸馏训练,我们搜集了Magpie、Openhermes、Mammoth 2等知名开源数据集,以及私有的合成数据集初始化来我们的蒸馏过程。指令数据以中英文为主,并且进行了难度打分和任务相关的重采样,实现指令数据的多样性。

在难度打分方面,我们使用LLM-as-a-Judge范式使用教师模型,从模型回答的准确性、相关性、帮助性、详细程度给出评分。我们使用学生模型的分数减去教师模型回答分数,获得分数差,我们命名为模型拟合难度分数(MFD Score)。模型拟合难度分数越高,该指令对于蒸馏训练的价值越大。因此,拟合难度过低的指令数据可以在训练集中删除。在我们的实践中,英文教师模型采用了GPT4,中文教师模型采用了Qwen-max。参考的打分模板如下所示:

在数据多样性方面,我们考虑了三种多样性,分别为任务多样性、长度多样性和语种多样性:

  • 任务多样性:我们参考 WizardLM 中对 LLM 的能力评估维度,定义了33种任务类型,收集标注了一个3万条的任务分类数据集,基于 Deberta v3 训练了一个任务分类器,该任务分类器与 ChatGPT 在测试集上分类结果相同的概率为86%,人类评估的任务分类准确率为93%。我们使用专有的任务分类器给数据打上显式的任务类型标签。
  • 长度多样性:数据集中的指令和答案需要有均衡的长度分布,也需要包含很长和很短的长尾分布指令。这对于训练后模型处理长尾分布数据的鲁棒性至关重要。我们首先对数据集的长度分布做正态分布估计,考虑长尾分布的数据量和正态分布估计的数据量之间的偏差,我们首先对同一任务池内的数据分布做正态分布估计,如果长尾分布数据不足,需要对长度满足Gamma公式展示 P ( L > μ + 2 σ ) < P ^ ( L > μ + 2 σ ) \ P(L > \mu + 2\sigma) < \hat{P}(L > \mu + 2\sigma)  P(L>μ+2σ)<P^(L>μ+2σ) P ( L < μ − 2 σ ) < P ^ ( L < μ − 2 σ ) \ P(L < \mu - 2\sigma) < \hat{P}(L < \mu - 2\sigma)  P(L<μ2σ)<P^(L<μ2σ) 的数据做指令扩展。
  • 语种多样性:很多场景我们需要训练模型在多个语言上的能力,例如中文和英文,但是我们缺少分布足够广泛中文数据,我们使用Qwen-max做数据语种扩展,例如我们使用Prompt让Qwen-max生成和相同任务类型但内容不同,语言不同,包含更多中国常识的数据,直到两种语言数据量大致相等。

指令数据优化

在指令数据优化上,我们首先使用Prompt模板让教师模型扩展数据。在实际应用中,比如扩展中文数据、生成多轮对话数据,需要修改相应的Prompt要求。参考扩展模板如下:

对于多轮对话数据的构造,我们要求教师模型严格基于上一轮包含的回答信息进行追问。实验发现这一类数据格式还会有利于IFEval评测能力的提升。

蒸馏教师大模型需要获得教师模型的回答。教师模型合成回答的格式、风格、长度影响学生模型学到的风格,以及学生模型收敛泛化速度。在获得教师模型的回答时,我们采用了如下三种策略:

  • 任务格式优化:在标注教师模型的回答时,我们根据任务特点,优化不同任务教师模型回答风格。例如,推理任务要分步推理,代码类任务要有详细注释和解释,写作类任务要详细等。
  • 教师模型标注回复精简:我们在使用教师模型标注数据集回答时,会要求教师模型标注的回答要 “精确但是完整”,这样风格的回答可以让小模型学到风格更精简的回答,减少输出难度和幻觉比例,同时保留了回答的完整性。
  • 模型自我蒸馏:我们额外使用了自蒸馏方法。由于这一步骤需要模型改写能力和学生模型能力差异较小,我们额外使用Qwen2-7B-Instruct改写教师模型标注的回答,缩短教师模型和学生模型输出的分布差异,以此能有效减少分布差异带来的灾难性遗忘问题。此外,必须注意的是,数据集中的问答对不能有一些固定的模版文本,不能让模型学到一些固定的规律模板文本。

当优化上述指令数据后,我们进一步使用大模型进行质量的校验,以排除数据质量较低的指令数据,保证蒸馏数据源的精度。

模型蒸馏训练

获得高质量指令数据后,我们采用两种方式训练学生模型。第一种方式即SFT(Supervised Fine-Tuning),即直接微调学生模型的参数。然而,对于一些较难的指令任务,直接进行SFT训练很难获得效果比较好的学生模型,我们进一步使用DPO(Direct Preference Optimization)进行更细粒度的继续微调。

Pr ⁡ ( y 1 ≻ y 2 ) = exp ⁡ ( r ( y 1 ) ) exp ⁡ ( r ( y 1 ) ) + exp ⁡ ( r ( y 2 ) ) = σ [ r ( y 1 ) − r ( y 2 ) ] \Pr(y_1 \succ y_2) = \frac{\exp(r(y_1))}{\exp(r(y_1)) + \exp(r(y_2))} = \sigma[r(y_1) - r(y_2)] Pr(y1y2)=exp(r(y1))+exp(r(y2))exp(r(y1))=σ[r(y1)r(y2)]

其中 σ \sigma σ 是函数 σ ( x ) : = 1 1 + exp ⁡ ( − x ) \sigma(x) := \frac{1}{1 + \exp(-x)} σ(x):=1+exp(x)1。基于DPO的知识蒸馏的目标让学生模型拟合教师模型的分布,这也可以被理解为期望学生模型有更大的概率输出与教师模型相似的结果。根据前述偏好模型,我们可以得到以下概率公式:

p ∗ ( y 1 ≻ y 2 ∣ x ) = σ ( β log ⁡ q θ ( y 1 ∣ x ) p ( y 1 ∣ x ) − β log ⁡ q θ ( y 2 ∣ x ) p ( y 2 ∣ x ) ) \ p^*(y_1 \succ y_2 | x) = \sigma \left( \beta \log \frac{q_\theta(y_1|x)}{p(y_1|x)} - \beta \log \frac{q_\theta(y_2|x)}{p(y_2|x)} \right)  p(y1y2x)=σ(βlogp(y1x)qθ(y1x)βlogp(y2x)qθ(y2x))

省略提示$ x $,DPO蒸馏训练的优化目标为:

L = − E [ log ⁡ σ ( β log ⁡ q θ ( y 1 ) p ( y 1 ) − β log ⁡ q θ ( y 2 ) p ( y 2 ) ) ] \ L = -\mathbb{E} \left[ \log \sigma \left( \beta \log \frac{q_\theta(y_1)}{p(y_1)} - \beta \log \frac{q_\theta(y_2)}{p(y_2)} \right) \right]  L=E[logσ(βlogp(y1)qθ(y1)βlogp(y2)qθ(y2))]

并且,我们在蒸馏损失中添加了长度归一化因子,以防止模型出现过短的回复,如下所示:

L = − E [ log ⁡ σ ( β ∣ y 1 ∣ log ⁡ q θ ( y 1 ) p ( y 1 ) − β ∣ y 2 ∣ log ⁡ q θ ( y 2 ) p ( y 2 ) ) ] \ L = -\mathbb{E} \left[ \log \sigma \left( \frac{\beta} {|y_1|} \log \frac{q_\theta(y_1)}{p(y_1)} - \frac{\beta} {|y_2|} \log \frac{q_\theta(y_2)}{p(y_2)} \right)\right]  L=E[logσ(y1βlogp(y1)qθ(y1)y2βlogp(y2)qθ(y2))]

经过多个SFT和DPO的蒸馏训练,最终我们得到了蒸馏后的学生模型。

效果评测

在本节中,我们从多个角度评测DistilQwen2蒸馏小模型的实际效果,验证大模型知识蒸馏技术的有效性。

指令遵循能力评测

我们在多个权威指令遵循评测基准上测试了DistilQwen2蒸馏小模型的能力。其中,AlpacaEval 2.0是权威的指令遵循评测基准,使用GPT4作为裁判员评估回复生成质量。特别地,AlpacaEval 2.0引入了长度控制的胜率(Length-controlled Win Rates),避免GPT4偏向于更长的回复,从而减小评估偏差。MT-Bench是另一个评测基准,它包含了来自8个类别的80个任务,同样使用GPT4作为评判标准,具有两种不同模式:多轮对话和单轮对话。IFEval专注于使用“可验证的指令”进行模型效果的评估,从而使结果更加客观,例如“写一篇超过400个单词的短文”、“模型输出必须严格符合JSON格式”,根据使用的Prompt不同,包括instruction-loose和strict-prompt两种评估模式。DistilQwen2在1.5B和7B两个参数量级的模型和原始Qwen2模型的效果对比如下表所示,可以看出本文描述的知识大模型蒸馏算法能进一步提升现有大语言模型的指令遵循能力,在多个评测基准上取得明显的、一致性的效果提升。

模型AlpacaEval 2.0 (length-controlled)MT-BenchMT-Bench (single)IFEval (instruction-loose)IFEval (strict-prompt)
1.5B量级
Qwen2-1.5B-Instruct5.225.856.4541.3728.10
DistilQwen2-1.5B-Instruct8.286.427.1249.7636.04
7B量级
Qwen2-7B-Instruct24.338.278.6866.6752.31
DistilQwen2-7B-Instruct25.358.409.0371.4660.26

为了横向比较同期发布的不同参数规模的模型效果,下表展示了这些模型在AlpacaEval 2.0的评测结果,从低到高进行排序。特别地,由于Qwen2系列模型不包括4B和14B规模的模型,我们将Qwen1.5系列模型纳入排序。对于英文模型,我们也横向对比Llama3系列模型。模型效果排序如下所示。可以看出,DistilQwen2系列模型具有很高的性价比,在指令遵循能力方面,甚至超过了参数量接近或大于其参数量两倍的模型。例如DistilQwen2-1.5B-Instruct和DistilQwen2-7B-Instruct效果分别明显超越了参数量为其两倍或以上的Qwen1.5-4B-Chat和Qwen1.5-14B-Chat,并且这些提升在小模型上更加明显。DistilQwen2-7B-Instruct在指令遵循能力上也大幅超越Llama3系列8B参数模型,包括Llama3-8B-Instruct和Llama3.1-8B-Instruct。

模型参数量AlpacaEval 2.0 (length-controlled)
Qwen1.5-1.8B-Chat1.8B2.6
Qwen2-1.5B-Instruct1.5B5.22
Qwen1.5-4B-Chat4B5.44
DistilQwen2-1.5B-Instruct1.5B8.28
Qwen1.5-7B-Chat7B14.7
Llama3.1-8B-Instruct8B20.9
Llama3-8B-Instruct8B22.9
Qwen1.5-14B-Chat14B23.9
Qwen2-7B-Instruct7B24.33
DistilQwen2-7B-Instruct7B25.35

模型通用能力评测

为了评测DistilQwen2蒸馏小模型的通用能力在蒸馏过程中是否存在灾难性遗忘,我们进一步评测了模型的通用能力。其中,MMLU、CEval、CMMLU是权威的中英文模型知识评测数据集,为选择题格式;GSM8K、HumanEval、MBPP评测模型推理推理能力,分别评测模型解答数学问题和编程问题的能力。DistilQwen2系列模型和原始QWen2模型的评测效果对比如下所示。从实验结果可以看出,DistilQwen2蒸馏小模型在所有评测任务中取得了与QWen2模型相似甚至更高的效果,说明这一模型在最大程度上提升了指令遵循的能力,同时在NLP基础任务上保持了较好的性能。

模型选择题格式(模型知识评测)生成式(基础推理能力评测)平均分
MMLUCEvalCMMLUGSM8KHumanEval
1.5B量级
Qwen2-1.5B-Instruct55.5868.8769.7059.0646.34
DistilQwen2-1.5B-Instruct56.0769.2469.7860.2751.83
7B量级
Qwen2-7B-Instruct69.7781.5180.2986.6678.05
DistilQwen2-7B-Instruct69.8081.2881.2086.6684.15

模型输出案例

以下给出数个不同模型输出比较,对于同一指令,我们对比了DistilQwen2-7B-Instruct和GPT-4o、Qwen2-7B-Instruct回复对比结果,特别是知识性和逻辑推理类问题。从输出结果可以看出,DistilQwen2-7B-Instruct的输出具有良好的事实正确性和逻辑推理能力,对于某些问题,其输出比原始的Qwen2-7B-Instruct模型更优。

示例一:知识性问题

输入指令麦哲伦航队在全球旅行时使用了六分仪测量经纬度么?
GPT-4o回复麦哲伦航队进行全球航行的时间是在1519年至1522年,而六分仪的发明是在18世纪,这意味着他们不可能使用六分仪来测量经纬度。
在麦哲伦的时代,航海家主要依赖于简单的工具如星盘、烈角仪(艾斯特罗拉比)和四分仪来测量纬度,通过观测太阳或北极星的高度来完成。他们测量经度的能力非常有限,多依赖于推算和估算。经度的精确测量直到18世纪末制作用于航海的精确时计(如航海钟)发明后才成为可能。
Qwen2-7B-Instruct回复是的,麦哲伦船队在环球航行的过程中确实使用了六分仪来测量经纬度。六分仪是一种测量天体与地平线角度的仪器,通过这种测量,航海家可以确定自己的纬度位置。对于确定经度,则需要依赖于精确的时间测量,这在当时是一个挑战。尽管麦哲伦船队在环球航行时面对了许多困难和未知,但他们的探索精神和对科技工具的应用,如六分仪,对于后来的航海和地理发现有着深远的影响。
DistilQwen2-7B-Instruct回复麦哲伦船队在进行环球航行时,并没有使用六分仪来测量经纬度。六分仪的发明是在16世纪末,而麦哲伦的环球航行则是在1519年至1522年期间完成的。麦哲伦船队在航海过程中主要依靠传统的导航方法,包括观察太阳和星星的位置来确定航线和位置。直到17世纪,随着航海技术的进一步发展,六分仪才开始被广泛应用于航海中,用于更精确地测量纬度。

示例二:知识性问题

输入指令请解释成语“逢人说项”中的“项”字的意思。
GPT-4o 回复成语“逢人说项”中的“项”,是指唐代诗人项斯。这个成语源自于项斯的朋友李翱,因项斯为人谦虚、才情出众,所以李翱总是向他人称赞项斯的才华和品德。“逢人说项”因此用来形容到处称赞或推荐某人。
Qwen2-7B-Instruct输出回复“逢人说项”这个成语中的“项”字,指的是宋朝诗人项斯。这个成语原本的意思是指项斯的诗作受到了广泛的好评和推崇,以至于人们在遇到别人时,都会推荐或称赞他的诗作。后来,“逢人说项”这个成语被引申为形容一个人或事物受到普遍的赞誉和推荐,人们在遇到相关话题时,都会不自觉地提到或赞扬它。
DistilQwen2-7B-Instruct输出回复成语“逢人说项”中的“项”字指的是“项斯”,这是一个典故的来源。该成语用来形容一个人非常热衷于向别人推荐或赞扬某个人或事物。典故出自唐代诗人杨敬之对项斯的推崇,杨敬之多次在诗文中赞扬项斯的才华,以至于人们一提到项斯的名字,就会想到杨敬之的赞誉。因此,“逢人说项”就演变为了现在的成语,用来形容那种不厌其烦地向他人推荐或赞扬某人或某事的行为。

示例三:逻辑推理类问题

模型下载和使用

DistilQwen2在阿里云人工智能平台PAI上的实践

以下HuggingFace transformers库为例,简要介绍如何在PAI-DSW上使用DistilQwen2模型。首先需要保证PAI-DSW镜像内transformers版本大于等于4.37.0,否则会在加载模型时报错:

KeyError: 'qwen2'

以DistilQwen2-1.5B-Instruct为例,我们可以使用如下代码调用模型:

from transformers import AutoModelForCausalLM, AutoTokenizermodel_name = "alibaba-pai/DistilQwen2-1.5B-Instruct"model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)prompt = "请给我简单介绍一下杭州西湖。"
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)generated_ids = model.generate(**model_inputs,max_new_tokens=512
)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

DistilQwen2在开源社区的下载

我们在HuggingFace和ModelScope上开源了我们蒸馏后的模型,分别为alibaba-pai/DistilQwen2-7B-Instruct和alibaba-pai/DistilQwen2-1.5B-Instruct。以HuggingFace为例,用户可以使用如下代码下载这两个模型:

from huggingface_hub import snapshot_downloadmodel_name = "alibaba-pai/DistilQwen2-1.5B-Instruct"
snapshot_download(repo_id=model_name, cache_dir="./DistilQwen2-1.5B/")model_name = "alibaba-pai/DistilQwen2-7B-Instruct"
snapshot_download(repo_id=model_name, cache_dir="./DistilQwen2-7B/")

此外,我们在先前的工作中开源了用于指令增强和扩写的专用模型,用户可以参考这些模型的使用方式进行数据层面的大模型知识蒸馏:

模型功能链接
Qwen2-1.5B-Instruct-Exp指令扩展https://huggingface.co/alibaba-pai/Qwen2-1.5B-Instruct-Exp
Qwen2-7B-Instruct-Exp指令扩展https://huggingface.co/alibaba-pai/Qwen2-7B-Instruct-Exp
Qwen2-1.5B-Instruct-Refine指令优化https://huggingface.co/alibaba-pai/Qwen2-1.5B-Instruct-Refine
Qwen2-7B-Instruct-Refine指令优化https://huggingface.co/alibaba-pai/Qwen2-7B-Instruct-Refine
Qwen2-7B-Instruct-Response-Exp指令回复扩展https://huggingface.co/alibaba-pai/Qwen2-7B-Instruct-Response-Exp

小结与未来工作

随着人工智能领域的不断进步,特别是大语言模型的迅猛发展,如何优化这些模型的运算效率和降低其部署成本正成为研究的前沿课题。DistilQwen2 作为基于 Qwen2 大模型的轻量级语言模型,通过知识蒸馏技术,不仅成功地实现了性能与资源消耗的有效平衡,还显著提升了指令遵循效果。这一创新为在移动设备和边缘计算等资源有限的环境中应用大语言模型奠定了基础,使得AI技术更加灵活且易于推广。在未来的工作中,我们计划进一步完善 DistilQwen2 的功能,探索更多适用于不同应用场景的知识蒸馏算法。同时,针对不断变化的市场需求,我们将集中精力于优化模型的微调策略,以提升其在特定任务中的表现。此外,我们将持续更新 DistilQwen2 在阿里云人工智能平台 PAI 上的最佳实践案例,并将继续加强与开源社区的合作,通过提供更多的工具和资源,促进开发者和企业在自然语言处理应用上的创新和实践。

参考文献

  1. Yuanhao Yue, Chengyu Wang, Jun Huang, Peng Wang. Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning. EMNLP 2024
  2. Cheng-Yu Hsieh, Chun-Liang Li, Chih-Kuan Yeh, Hootan Nakhost, Yasuhisa Fujii, Alex Ratner, Ranjay Krishna, Chen-Yu Lee, Tomas Pfister. Distilling Step-by-Step! Outperforming Larger Language Models with Less Training Data and Smaller Model Sizes. ACL 2023
  3. Yixing Li, Yuxian Gu, Li Dong, Dequan Wang, Yu Cheng, Furu Wei. Direct Preference Knowledge Distillation for Large Language Models. arXiv

开源地址

alibaba-pai/DistilQwen2-7B-Instruct:

  • https://huggingface.co/alibaba-pai/DistilQwen2-7B-Instruct

  • https://modelscope.cn/models/PAI/DistilQwen2-7B-Instruct

alibaba-pai/DistilQwen2-1.5B-Instruct:

  • https://huggingface.co/alibaba-pai/DistilQwen2-1.5B-Instruct

  • https://modelscope.cn/models/PAI/DistilQwen2-1.5B-Instruct

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员也要认识下“信创产业”

兄弟姐妹们&#xff0c;大家初入社会会觉得技术是第一位&#xff0c;我呸&#xff0c;其实你在那个领域敲代码的选择才是最重要的&#xff0c;选对了领域绝对比你背上100个面试题目强&#xff0c;今天带大家了解下信创产业。 信创产业&#xff0c;即信息技术应用创新产业&#…

Rust 力扣 - 1423. 可获得的最大点数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 题目所求结果存在下述等式 可获得的最大点数 所有卡牌的点数之和 - 长度为&#xff08;卡牌数量 - k&#xff09;的窗口的点数之和的最小值 我们遍历长度为&#xff08;卡牌数量 - k&#xff09;的窗口&#…

前端实现json动画(附带示例)

前端实现json动画&#xff08;附带示例&#xff09; 使用lottie制作动画。1.json动画2.实现效果3.git仓库4.运行5.json动画天堂6.代码7. 经常使用的方法 使用lottie制作动画。 1.json动画 废话不多说&#xff0c;直接看效果图2.实现效果 3.git仓库 https://gitee.com/chaiach…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

成都睿明智科技有限公司共赴抖音电商蓝海

在这个短视频风起云涌的时代&#xff0c;抖音作为现象级的社交媒体平台&#xff0c;不仅改变了人们的娱乐方式&#xff0c;更悄然间重塑了电商行业的格局。在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司凭借其敏锐的市场洞察力和专业的服务能力&#xff0c;…

Centos 网络接口打vlan标签

Centos 网络接口打vlan标签 本次使用给bond打vlan标签&#xff0c;其实其他普通接口也一样 Centos创建bond前需要关闭NetworkManager [root192 network-scripts]# systemctl disable NetworkManager --now Removed symlink /etc/systemd/system/multi-user.target.wants/Netwo…

ElMessageBox 内容自定义

1. ElmessageBox弹出框显示内容设置字体颜色&#xff1a; 代码内容&#xff1a; const saveToGroup (row: Customers) > {ElMessageBox.confirm(h("i",{ style: "color: #409EFF" },"未建档客户公司无法创建线索/商机/礼品申请。"),"…

pdmaner连接sqlexpress

别以为sqlserver默认的端口总是1433 案例 有台sqlserver2008 express服务器&#xff0c;刚安装&#xff0c;支持混合模式登录&#xff0c;其它什么配置也没改。 先看用ADO连接 这说明&#xff1a; 案例中sqlserver端口不是1433 &#xff01;&#xff01;&#xff01;ADO连接…

使用MongoDB Atlas构建无服务器数据库

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用MongoDB Atlas构建无服务器数据库 MongoDB Atlas 简介 注册账户 创建集群 配置网络 设置数据库用户 连接数据库 设计文档模式…

k8s 上如何跑 Dolphins 模型

接着上一篇的介绍&#xff0c;这一篇就来跑跑 Dolphins 模型&#xff0c;本篇会记录&#xff0c;跑模型常见的阬点。 1 在 k8s 上创建 pod 将外部数据挂载在 pod 里&#xff0c;并申请 gpu 资源。同时修改代码里对应的引入数据的路径 # dolphins.yaml apiVersion: v1 kind: …

MySQL数据表导入到clickhouse数据库中

前言&#xff1a;研发需求&#xff0c;需要把MySQL数据导入到clickhouse中来测试计算性能是否提升。 从MySQL导入到clickhouse需要两个工具 NavicatDBeaver 导出MySQL数据 连接上MySQL>选择数据库>选择数据表 选择csv格式 导出数据 下面全部默认即可 开始导出 …

Spring Boot 与 Vue 共筑二手书籍交易卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

零基础Java第十三期:继承与多态(一)

目录 一、继承 1.1. 继承的目的 1.2. 继承的概念 1.3. 继承的语法 1.4. 父类的访问 1.5. 继承中的重载与重写 1.6. 子类的构造方法 1.7. 再谈初始化 一、继承 1.1. 继承的目的 我们来定义一个Dog和Cat的类&#xff1a; public class Dog {public int age;public Strin…

ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录 一、搭建SkyWalking 1.1 版本选择 1.2 下载安装 1.3 配置启动 1.4 SkyWalking UI介绍 二、Springboot项目使用 2.1 Agent下载 2.2 Agent配置skywalking oap地址 2.3 IDEA配置Agent地址 2.4 生成的ES索引介绍 三、在kibana上查看日志 四、问题和解决 3.1 日志…

MySQL45讲 第十三讲 为什么表数据删掉一半,表文件大小不变?

文章目录 MySQL45讲 第十二讲 为什么表数据删掉一半&#xff0c;表文件大小不变&#xff1f;一、引言二、InnoDB 表数据存储方式三、数据删除流程及表空间未回收原因四、重建表以回收表空间五、Online 与 inplace 概念区别六、总结 MySQL45讲 第十二讲 为什么表数据删掉一半&am…

2024年前三季度币安、OKX等五大交易所上币表现分析

随着加密市场竞争的加剧&#xff0c;头部交易所逐渐在上币策略、代币选择、交易活跃度等方面采取了不同的应对策略。Animoca Digital Research近期发布的一份报告&#xff0c;通过对币安、OKX、Bitget、KuCoin和Bybit五大交易所2024年前三季度的上币情况进行了详细分析。本文将…

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prune docker login 语法: docker login [options] [server] 功能&#xff1a;登录到一个存放docker镜像的仓库&am…

Qt聊天室项目

目录 项目要求 项目背景 技术分析 架构设计 服务器架构 模块划分 模块之间的交互 客户端架构 模块划分 模块之间交互 项目展示 项目实现 服务器 ui server.pro dialog.h dialog.cpp 客户端 ui cient.pro dialog.h dialog.cpp 打包步骤不做演示 视频演示 项目…

MATLAB实现图像恢复设计报告

设计目标及需求分析 设计目标&#xff1a;希望通过matlab设计一个软件来实现对CT图像的模糊再恢复的过程&#xff0c;是对现实中CT图像复原的一个简单仿真。 需求分析&#xff1a;随着网络和通信技术的发展&#xff0c;数字图像处理与分析技术已经在科学研究、工业生产、医疗…

Python毕业设计选题:基于django+vue的4S店客户管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 员工信息管理 个人中心 车辆信息管理 售后服务管理 售后安排管理 车辆信…