当前位置: 首页 > news >正文

llama-factory学习个人记录

框架、模型、数据集准备

1.llama-factory部署

# 克隆仓库
git clone https://github.com/hiyouga/LLaMA-Factory.git
# 创建虚拟环境
conda create --name llama_factory python=3.10
# 激活虚拟环境
conda activate llama_factory
# 安装依赖
cd LLaMA-Factory
pip install -r requirements.txt

2.接下来是下载 LLM,可以选择自己常用的 LLM,包括 ChatGLM,BaiChuan,QWen,LLaMA 等,这里我们下载 Baichuan2-13B-Chat模型进行演示:

git lfs install
git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat

在LLaMA-Factory项目中,单显卡可以用命令或web页面训练,多显卡只能用用命令的方式

web页面方式

启动 LLaMA Factory 的 WebUI 页面

CUDA_VISIBLE_DEVICES=0 python src/webui.py

如果报错:Traceback (most recent call last):
  File "/home/bingxing2/ailab/group/ai4agr/wzf/LLM/frame/LLaMA-Factory/src/webui.py", line 13, in <module>
    main()
  File "/home/bingxing2/ailab/group/ai4agr/wzf/LLM/frame/LLaMA-Factory/src/webui.py", line 9, in main
    create_ui().queue().launch(share=gradio_share, server_name=server_name, inbrowser=True)
  File "/home/bingxing2/ailab/scxlab0069/.conda/envs/llama_factory/lib/python3.10/site-packages/gradio/blocks.py", line 2375, in launch
    raise ValueError(
ValueError: When localhost is not accessible, a shareable link must be created. Please set share=True or check your proxy settings to allow access to localhost. 

解决办法:

unset http_proxy

unset https_proxy

启动后的界面如下所示: 

 

界面分上下两部分,上半部分是模型训练的基本配置,有如下参数:

  • 模型名称:可以使用常用的模型,包括 ChatGLM,BaiChuan,QWen,LLaMA 等,我们根据下载的模型选择Baichuan2-13B-Chat。
  • 模型路径:输入框填写我们之前下载的 Baichuan 模型的地址。

微调方法有三种:

  • full:将整个模型都进行微调。
  • freeze:将模型的大部分参数冻结,只对部分参数进行微调。
  • lora:将模型的部分参数冻结,只对部分参数进行微调,但只在特定的层上进行微调。

模型断点(适配器):在未开始微调前为空,微调一次后可以点击刷新断点(适配器)按钮,会得到之前微调过的断点(适配器)。

高级设置可以不用管,使用默认值即可。

下半部分是一个页签窗口,分为Train、Evaluate、Chat、Export四个页签,微调先看Train界面,有如下参数:

训练阶段:选择训练阶段,分为预训练(Pre-Training)、指令监督微调(Supervised Fine-Tuning)、奖励模型训练(Reward Modeling)、PPO 、DPO 五种,这里我们选择指令监督微调(Supervised Fine-Tuning)。

  • Pre-Training:在该阶段,模型会在一个大型数据集上进行预训练,学习基本的语义和概念。
  • Supervised Fine-Tuning:在该阶段,模型会在一个带标签的数据集上进行微调,以提高对特定任务的准确性。
  • Reward Modeling:在该阶段,模型会学习如何从环境中获得奖励,以便在未来做出更好的决策。
  • PPO Training:在该阶段,模型会使用策略梯度方法进行训练,以提高在环境中的表现。
  • DPO Training:在该阶段,模型会使用深度强化学习方法进行训练,以提高在环境中的表现。

数据路径:指训练集数据文件所在的路径,这里的路径默认指的是 LLaMA Factory 目录下的文件夹路径,默认是data目录。

数据集:这里可以选择数据路径中的数据集文件,这里我们选择identity数据集,这个数据集是用来调教 LLM 回答诸如你是谁、你由谁制造这类问题的,里面的数据比较少只有 90 条左右。在微调前我们需要先修改这个文件中的内容,将里面的<NAME>和<AUTHOR>替换成我们的 AI 机器人名称和公司名称。选择了数据集后,可以点击右边的预览数据集按钮来查看数据集的前面几行的内容。

如果采用自行准备的数据集,要在 LLaMA Factory目录下data目录下的dataset_info.json添加新新数据集信息。

 替换后

学习率:学习率越大,模型的学习速度越快,但是学习率太大的话,可能会导致模型在寻找最优解时跳过最优解,学习率太小的话,模型学习速度会很慢,所以这个参数需要根据实际情况进行调整,这里我们使用默认值5e-5。

训练轮数:训练轮数越多,模型的学习效果越好,但是训练轮数太多的话,模型的训练时间会很长,因为我们的训练数据比较少,所以要适当增加训练轮数,这里将值设置为30。默认3.0

最大样本数:每个数据集最多使用的样本数,因为我们的数据量很少只有 90条,所以用默认值就可以了。默认10000

计算类型:这里的fp16 和 bf16 是指数字的数据表示格式,主要用于深度学习训练和推理过程中,以节省内存和加速计算,这里我们选择bf16。默认fp16

学习率调节器:有以下选项可以选择,这里我们选择默认值cosine。

  • linear(线性): 随着训练的进行,学习率将以线性方式减少。
  • cosine(余弦): 这是根据余弦函数来减少学习率的。在训练开始时,学习率较高,然后逐渐降低并在训练结束时达到最低值。
  • cosine_with_restarts(带重启的余弦): 和余弦策略类似,但是在一段时间后会重新启动学习率,并多次这样做。
  • polynomial(多项式): 学习率会根据一个多项式函数来减少,可以设定多项式的次数。
  • constant(常数): 学习率始终保持不变。
  • constant_with_warmup(带预热的常数): 开始时,学习率会慢慢上升到一个固定值,然后保持这个值。
  • inverse_sqrt(反平方根): 学习率会随着训练的进行按照反平方根的方式减少。
  • reduce_lr_on_plateau(在平台上减少学习率): 当模型的进展停滞时(例如,验证误差不再下降),学习率会自动减少。

梯度累积和最大梯度范数:这两个参数通常可以一起使用,以保证在微调大型语言模型时,能够有效地处理大规模数据,同时保证模型训练的稳定性。梯度累积允许在有限的硬件资源上处理更大的数据集,而最大梯度范数则可以防止梯度爆炸,保证模型训练的稳定性,这里我们使用默认值即可。梯度累积默认8,最大梯度范数1.0

断点名称:默认是用时间戳作为断点名称,可以自己修改。

其他参数使用默认值即可。

参数设置完后点击预览命令按钮可以查看本次微调的命令,确认无误后点击开始按钮就开始微调了,因为数据量比较少,大概几分钟微调就完成了。在界面的右下方还可以看到微调过程中损失函数曲线,损失函数的值越低,模型的预测效果通常越好

后端界面

前端界面 

 

4.模型试用

微调完成后,进入Chat页签对微调模型进行试用。首先点击页面上的刷新适配器按钮,然后选择我们最近微调的断点名称,再点击加载模型按钮,等待加载完成后就可以进行对话了,输入微调数据集中的问题,然后来看看微调后的 LLM 的回答吧。

如果觉得微调的模型没有问题,就可以将模型导出并正式使用了,点击Export页签,在导出目录中输入导出的文件夹地址。一般模型文件会比较大,右边的最大分块大小参数用来将模型文件按照大小进行切分,默认是10GB,比如模型文件有 15G,那么切分后就变成 2 个文件,1 个 10G,1 个 5G。设置完成后点击开始导出按钮即可,等导出完成后,就可以在对应目录下看到导出的模型文件了

指令方式

命令运行的脚本地址:LLaMA-Factory/examples/README_zh.md

训练指令 

 1.预训练指令

CUDA_VISIBLE_DEVICES=0 python src/train.py \--stage pt \                               # Pre——Training预训练模式--model_name_or_path path_to_llama_model \ # 模型地址--do_train \                               # 表示进行训练--dataset wiki_demo \                      # 使用的数据集--finetuning_type lora \                   # 微调的方法--lora_target W_pack \                     # LoRA作用模块:Baichuan为W_pack--output_dir path_to_pt_checkpoint \       # 断点保存:保存模型断点的位置--overwrite_cache \                        # 表示是否覆盖缓存文件--per_device_train_batch_size 4 \          # 批处理大小:每块 GPU 上处理的样本数量--gradient_accumulation_steps 4 \          # 梯度累积:梯度累积的步数(节省显存的方法)--lr_scheduler_type cosine \               # 学习率调节器:采用的学习率调节器名称--logging_steps 10 \                       # 日志间隔:每两次日志输出间的更新步数--save_steps 1000 \                        # 保存间隔:每两次断点保存间的更新步数--learning_rate 5e-5 \                     # 学习率:AdamW优化器的初始学习率--num_train_epochs 3.0 \                   # 训练轮数:需要执行的训练总轮数--plot_loss \                              # 绘制损失函数图--fp16                                     # 计算类型:是否启用fp16或bf16混合精度训练

如果报错:

File "/home/bingxing2/ailab/scxlab0069/.conda/envs/llama_factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_implreturn self._call_impl(*args, **kwargs)File "/home/bingxing2/ailab/scxlab0069/.conda/envs/llama_factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_implreturn forward_call(*args, **kwargs)File "/home/bingxing2/ailab/scxlab0069/.conda/envs/llama_factory/lib/python3.10/site-packages/torch/nn/modules/loss.py", line 1185, in forwardreturn F.cross_entropy(input, target, weight=self.weight,File "/home/bingxing2/ailab/scxlab0069/.conda/envs/llama_factory/lib/python3.10/site-packages/torch/nn/functional.py", line 3086, in cross_entropyreturn torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
RuntimeError: "nll_loss_out_frame" not implemented for 'Half'

解决办法:把fp16改成bf16 

2.指令监督微调(已跑通)

CUDA_VISIBLE_DEVICES=0 python src/train.py \--stage sft \--model_name_or_path path_to_llama_model \--do_train \--dataset alpaca_gpt4_zh \                  --template default \              # 提示模板:构建提示词时使用的模板 --finetuning_type lora \--lora_target W_pack \--output_dir path_to_sft_checkpoint \--overwrite_cache \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--learning_rate 5e-5 \--num_train_epochs 3.0 \--plot_loss \--fp16

 3训练奖励模型+PPO

CUDA_VISIBLE_DEVICES=0 python src/train.py \--stage rm \--model_name_or_path path_to_llama_model \--do_train \--dataset comparison_gpt4_zh \              # 奖励模型训练数据集--template default \--finetuning_type lora \--lora_target W_pack \--resume_lora_training False \              # 接着上次的LoRA权重训练或创建一个新的LoRA权重--checkpoint_dir path_to_sft_checkpoint \   # 指令微调模型的断点--output_dir path_to_rm_checkpoint \        # 奖励模型的输出位置--per_device_train_batch_size 2 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--learning_rate 1e-6 \--num_train_epochs 1.0 \--plot_loss \--fp16

PPO训练(PPO训练需要先进行上一步RM的训练,然后导入微调后模型和RM进行训练输出)

CUDA_VISIBLE_DEVICES=0 python src/train.py \--stage ppo \--model_name_or_path path_to_llama_model \--do_train \--dataset alpaca_gpt4_zh \--template default \--finetuning_type lora \--lora_target W_pack \--resume_lora_training False \--checkpoint_dir path_to_sft_checkpoint \   # 加载指令微调的断点模型--reward_model path_to_rm_checkpoint \      # 奖励模型的断点路径--output_dir path_to_ppo_checkpoint \       # ppo训练的断点输出位置--per_device_train_batch_size 2 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--learning_rate 1e-5 \--num_train_epochs 1.0 \--plot_loss

 4.DPO训练

(不需要先训练RM,直接导入微调模型进行DPO训练)

CUDA_VISIBLE_DEVICES=0 python src/train.py \--stage dpo \--model_name_or_path path_to_llama_model \--do_train \--dataset comparison_gpt4_zh \--template default \--finetuning_type lora \--lora_target W_pack \--resume_lora_training False \--checkpoint_dir path_to_sft_checkpoint \--output_dir path_to_dpo_checkpoint \--per_device_train_batch_size 2 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--learning_rate 1e-5 \--num_train_epochs 1.0 \--plot_loss \--fp16
  • 大规模无监督语言模型(LMs)虽然可以学习广泛的世界知识和一些推理技能,但由于其训练的完全无监督性,因此实现对其行为的精确控制是困难的。现有的获得这种可控性的方法是收集人工对模型生成相对质量的标签,并且通过人类反馈强化学习(RLHF)对无监督的 LM 进行微调,以使其与人类偏好相一致。然而,RLHF 是一个复杂且经常不太稳定的过程,它首先拟合一个反应人类偏好的奖励模型,然后通过强化学习对大型无监督 LM 进行微调以最大化评估奖励,并避免与原始模型相差太远。
  • 在本文中,我们使用奖励函数和最优策略间的映射,展示了约束奖励最大化问题完全可以通过单阶段策略训练进行优化 ,从本质上解决了人类偏好数据上的分类问题。我们提出的这个算法称为直接偏好优化(Direct Preference Optimization,DPO)。它具有稳定性、高性能和计算轻量级的特点,不需要拟合奖励模型,不需要在微调时从 LM 中采样,也不需要大量的超参调节。我们的实验表明了 DPO 可以微调 LMs 以对齐人类偏好,甚至比现有方法更好。值得注意的是,用 DPO 进行微调在控制生成结果的情感以及改善摘要和单轮对话的响应质量方面表现出更好的能力,同时在实现和训练时的难度大大降低。

模型评估

CUDA_VISIBLE_DEVICES=0 python src/evaluate.py \--model_name_or_path path_to_llama_model \     # base模型--finetuning_type lora \ --checkpoint_dir path_to_checkpoint \          # 训练好的检查点--template vanilla \                           # 模板类型--task ceval \                                 # 任务类型--split validation \                           # 指定数据集的划分--lang zh \--n_shot 5 \                                   # few-shot 学习的示例数--batch_size 4                                 # 评估时的批量大小

模型预测

CUDA_VISIBLE_DEVICES=0 python src/train.py \--model_name_or_path path_to_llama_model \    # base模型--do_predict \                                # 执行预测任务--dataset alpaca_gpt4_zh \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint \         # 训练好的检查点--output_dir path_to_predict_result \--per_device_eval_batch_size 8 \--max_samples 100 \                           # 最大样本数:每个数据集最多使用的样本数--predict_with_generate                       # 使用生成模式进行预测

微调训练后生成的文件夹path_to_sft_checkpoint中包括:

  • checkpoint-xxx 间隔固定step生成的模型断点
  • runs 文件夹用于tensorboard可视化训练过程
  • lora adapter模型、配置
  • 分词器脚本、配置、模型
  • 训练日志
  • loss曲线

参考:用通俗易懂的方式讲解大模型:一个强大的 LLM 微调工具 LLaMA Factory_llama-factory-CSDN博客

从零开始的LLaMA-Factory的指令增量微调_llamafactory微调-CSDN博客 

LLaMA-Factory参数的解答(命令,单卡,预训练)_llama-factory单机多卡-CSDN博客 

Llama-Factory的baichuan2微调-CSDN博客 

相关文章:

llama-factory学习个人记录

框架、模型、数据集准备 1.llama-factory部署 # 克隆仓库 git clone https://github.com/hiyouga/LLaMA-Factory.git # 创建虚拟环境 conda create --name llama_factory python3.10 # 激活虚拟环境 conda activate llama_factory # 安装依赖 cd LLaMA-Factory pip install -…...

VLC播放器(全称VideoLAN Client)

一、简介 VLC播放器&#xff08;全称VideoLAN Client&#xff09;是一款开源的多媒体播放器&#xff0c;由VideoLAN项目团队开发。它支持多种音视频格式&#xff0c;并能够在多种操作系统上运行&#xff0c;如Windows、Mac OS X、Linux、Android和iOS等。VLC播放器具备播放文件…...

跟小伙伴们说一下

因为很忙&#xff0c;有一段时间没有更新了&#xff0c;这次先把菜鸟教程停更一下&#xff0c;因为自己要查缺补漏一些细节问题&#xff0c;而且为了方便大家0基础也想学C语言&#xff0c;这里打算给大家开一个免费专栏&#xff0c;这里大家就可以好好学习啦&#xff0c;哪怕0基…...

学 C/C++ 具体能干什么?

学习 C 和 C 后&#xff0c;你可以从事许多不同的工作和项目&#xff0c;这两种语言以其高性能和低级控制而闻名&#xff0c;特别适合以下几个领域&#xff1a; 1. 系统编程 C 和 C 是系统编程的首选语言&#xff0c;适用于操作系统、驱动程序和嵌入式系统开发。 操作系统开发…...

Django之Ajax实战笔记--城市级联操作

1. 项目架构搭建 1.1 创建项目tpdemo,创建应用myapp # 创建项目框架tpdemo$ django-admin startproject tpdemo$ cd tpdemo# 在项目中创建一个myapp应用$ python manage.py startapp myapp# 创建模板目录$ mkdir templates$ mkdir templates/myapp$ cd ..$ tree tpdemotpdemo…...

基于Netty实现WebSocket服务端

本文基于Netty实现WebSocket服务端&#xff0c;实现和客户端的交互通信&#xff0c;客户端基于JavaScript实现。 在【WebSocket简介-CSDN博客】中&#xff0c;我们知道WebSocket是基于Http协议的升级&#xff0c;而Netty提供了Http和WebSocket Frame的编解码器和Handler&#…...

27【Aseprite 作图】盆栽——拆解

1 橘子画法拆解 (1)浅色3 1 0;深色0 2 3 就可以构成一个橘子 (2)浅色 2 1;深色1 0 (小个橘子) (3)浅色 2 1 0;深色1 2 3 2 树根部分 (1)底部画一条横线 (2)上一行 左空2 右空1 【代表底部重心先在右】 (3)再上一行,左空1,右空1 (4)再上一行,左突出1,…...

【开源】2024最新python豆瓣电影数据爬虫+可视化分析项目

项目介绍 【开源】项目基于pythonpandasflaskmysql等技术实现豆瓣电影数据获取及可视化分析展示&#xff0c;觉得有用的朋友可以来个一键三连&#xff0c;感谢&#xff01;&#xff01;&#xff01; 项目演示 【开源】2024最新python豆瓣电影数据爬虫可视化分析项目 项目截图…...

[JDK工具-5] jinfo jvm配置信息工具

文章目录 1. 介绍2. 打印所有的jvm标志信息 jinfo -flags pid3. 打印指定的jvm参数信息 jinfo -flag InitialHeapSize pid4. 启用或者禁用指定的jvm参数 jinfo -flags [|-]HeapDumpOnOutOfMemoryError pid5. 打印系统参数信息 jinfo -sysprops pid6. 打印以上所有配置信息 jinf…...

【Linux系统编程】进程概念、进程排队、进程标识符、进程状态

目录 什么是进程&#xff1f; 浅谈进程排队 简述进程属性 进程属性之进程标识符 进程操作之进程创建 初识fork fork返回值 原理角度理解fork fork的应用 进程属性之进程状态 再谈进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux下的进程状态 “R”(运行状…...

Java与GO语言对比分析

你是不是总听到go与java种种对比&#xff0c;其中在高并发的服务器端应用场景会有人推荐你使用go而不是 java。 那我们就从两者运行原理和基本并发设计来对比分析&#xff0c;看看到底怎么回事。 运行原理对比 java java 中 jdk 已经帮我们屏蔽操作系统区别。 只要我们下载并…...

Linux文件系统原理

Linux文件系统 冯诺依曼在1945年提出计算机的五大组成部分 运算器&#xff1a;CPU 控制器&#xff1a;CPU 存储器&#xff1a;内存和硬盘 输入设备&#xff1a;鼠标、硬盘 输出设备&#xff1a;显示器一、硬盘结构 机械硬盘结构 扇区&#xff1a;硬盘的最小存储单位&#xff…...

初识Spring Cache:如何简化你的缓存处理?

文章目录 1、Spring Cache介绍2、 常用注解3、 使用案例 1、Spring Cache介绍 Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的…...

攻防世界[GoodRe]

攻防世界[GoodRe] 学到知识&#xff1a; 逆向的精髓&#xff1a;三分懂&#xff0c;七分蒙。TEA 算法快速识别&#xff08;蒙&#xff09;&#xff1a; 数据处理的形式&#xff1a;进入加密时的数据和加密结束后的数据&#xff0c;处理时数据的分组等等&#xff0c;都能用来…...

IntelliJ IDEA实用插件:轻松生成时序图和类图

IntelliJ IDEA生成时序图、类图 一、SequenceDiagram1.1 插件安装1.2 插件设置1.3 生成时序图 二、PlantUML Integration2.1 插件安装2.2 插件设置2.3 生成类图 在软件建模课程的学习中&#xff0c;大家学习过多种图形表示方法&#xff0c;这些图形主要用于软件产品设计。在传统…...

SpringBoot + Mybatis-Plus中乐观锁实现

悲观锁 悲观锁是一种悲观思想&#xff0c;它认为数据很可能会被别人所修改 所以总会对数据进行上锁&#xff0c;读操作和写操作都会上锁&#xff0c;性能较低&#xff0c;使用较少&#xff01; 乐观锁 乐观锁是一种乐观思想&#xff0c;它认为数据并不一定会被别人所修改 所以…...

设计模式深度解析:分布式与中心化,IT界两大巨头“华山论剑”

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨IT界的两大巨头交锋✨ &#x1f44b; 在IT界的广阔天地中&#xff0c;有两座…...

转行一年了

关注、星标公众号&#xff0c;直达精彩内容 ID&#xff1a;技术让梦想更伟大 整理&#xff1a;李肖遥 来公司一年了。 说是转行其实还是在半导体行业&#xff0c;熟悉我的朋友知道 &#xff0c;我在18年开始进入半导体行业&#xff0c;那个时候想着行业很重要&#xff0c;站对了…...

【LeetCode 151】反转字符串中的单词

1. 题目 2. 分析 这题要是用Python写&#xff0c;就非常简单了。 3. 代码 class Solution:def reverseWords(self, s: str) -> str:s " ".join(reversed(s.strip().split()))return s...

Behind the Code:Polkadot 如何重塑 Web3 未来

2024 年 5 月 17 日 Polkadot 生态 Behind the Code 第二季第一集 《创造 Web3 的未来》正式上线。第一集深入探讨了 Polkadot 和 Web3 技术在解决数字身份、数据所有权和去中心化治理方面的巨大潜力。 &#x1f50d; 查看完整视频&#xff1a; https://youtu.be/_gP-M5nUidc?…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...