十大开源 ChatGPT 替代品:弥合对话式 AI 的差距

news2024/11/28 0:57:31

聊天机器人彻底改变了企业与客户互动的方式。由 OpenAI 开发的最先进的 GPT-4 是该领域的主导者。但是,它不是开源的,这限制了开发人员复制结果或开发自己的类似于 GPT-4 的聊天机器人。

为了填补这一空白,开源社区已经开始提供 GPT-4 的替代品,这些替代品提供几乎相同的性能和功能,同时需要更少的计算能力。本文旨在向您介绍可以在下一个 AI 项目中使用的 10 大开源 ChatGPT 替代方案。

注意:其中一些模型带有非商业许可证,限制它们用于研究和学术目的。在使用它们之前,请先熟悉这些约束

 

 

1.ColossalChat

大聊天(在新标签页中打开),由 HPC AI Tech 开发,是一个开源项目,旨在复制基于 LLaMa 模型和 PyTorch AI 框架的 ChatGPT 类模型。它是第一个包含完整的人类反馈强化学习(RLHF)过程的实用开源项目,是最接近ChatGPT原有技术路线的项目。

ColossalChat 利用 PyTorch 灵活高效的深度学习框架,可实现快速原型设计、与其他库的无缝集成,以及提供高性能、用户友好的对话式 AI 体验。

ColossalChat 的主要特点之一是其双语数据集,其中包含大约 100,000 个中英文问答对。该数据集是从社交媒体平台上的真实问题场景中收集和清理的,用作种子数据集。它是使用自我指导技术扩展的。这些高质量的数据让ColossalChat能够实现更好的对话交互,同时也支持中文。

ColossalChat 遵循三阶段 RLHF 算法复制过程。第一阶段涉及监督指令微调。第二阶段涉及训练奖励模型。第三阶段使用强化学习算法。这种复制过程可以使生成的内容与人类价值观更加一致。

本项目由AI大模型开发系统Colossal-AI支持,可以基于PyTorch默认功能高效快速部署AI大模型训练和推理。该基础架构提供基础支持并显着提高训练速度。

以下是如何在每个 RLHF 阶段训练 ColossalChat 的示例:

# Training with a 4-GPU servers
colossalai run — nproc_per_node=4 train_sft.py \
— pretrain “/path/to/LLaMa-7B/” \
— model ‘llama’ \
— strategy colossalai_zero2 \
— log_interval 10 \
— save_path /path/to/Coati-7B \
— dataset /path/to/data.json \
— batch_size 4 \
— accimulation_steps 8 \
— lr 2e-5
 
# Training with a 4-GPU servers
colossalai run — nproc_per_node=4 train_reward_model.py \
— pretrain “/path/to/LLaMa-7B/” \
— model ‘llama’ \
— strategy colossalai_zero2 \
— dataset /path/to/datasets
 
# Training with a 8-GPU servers
colossalai run — nproc_per_node
 
=8 train_prompts.py prompts.csv \
— strategy colossalai_zero2 \
— pretrain “/path/to/Coati-7B” \
— model ‘llama’ \
— pretrain_dataset /path/to/dataset

基于 LLaMa 模型复制 ChatGPT 的完整代码是开源的,开发人员和研究人员都可以访问。

2. 羊驼-LoRA

羊驼-LoRA(在新标签页中打开)由于使用了 LoRA(低秩适应)技术,它似乎是微调 LLaMa 等语言模型的高效工具。

与其他微调方法相比,LoRA 具有多种优势,包括:

  • 更快的速度和更少的内存消耗,使其与消费类硬件兼容。
  • 较小的输出大小(兆字节而不是千兆字节)。
  • 在运行时组合多个微调模型的能力。

Alpaca-LoRA 实现了 PEFT(Python Easy Fine-Tuning)库,可以使用 LoRA 对基于 transformer 的语言模型进行微调。这导致即使在适度的硬件上也能进行​​高效且廉价的模型微调,并具有潜在的可组合输出。

使用 Alpaca-LoRA 微调 LLaMa 的步骤如下:

先决条件

在开始之前,请确保您可以访问 GPU 机器。由于 LoRA 的效率,即使是 NVIDIA T4 等低规格 GPU 或 4090 等消费类 GPU 也适用。此外,您还需要尚未公开的 LLaMa 权重。您可以通过 Meta Research 表格申请访问权限。

第 1 步:克隆 Alpaca-LoRA 存储库

克隆包含对 Cog(一种用于将机器学习模型打包到容器中的工具)支持的 Alpaca-LoRA 存储库。使用以下命令:

git clone https://github.com/daanelson/alpaca-lora
cd alpaca-lora

第 2 步:安装 Cog

接下来,使用以下命令安装 Cog:

sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog

第 3 步:获取 LLaMa 权重

将下载的权重放在名为“unconverted-weights”的文件夹中。目录结构应如下所示:

unconverted-weights
├── 7B
│   ├── checklist.chk
│   ├── consolidated.00.pth
│   └── params.json
├── tokenizer.model
└── tokenizer_checklist.chk

使用以下命令将权重从 PyTorch 检查点转换为与转换器兼容的格式:

cog run python -m transformers.models.llama.convert_llama_weights_to_hf \
  --input_dir unconverted-weights \
  --model_size 7B \
  --output_dir weights

您的最终目录结构应如下所示:

weights
├── llama-7b
└── tokenizermdki

第 4 步:微调模型

如果你的 GPU 内存更大,你可以增加到MICRO_BATCH_SIZE32 或 64 in finetune.py. 如果您有自己的指令调整数据集,请编辑DATA_PATHfinetune.py指向您自己的数据集。确保它的格式与alpaca_data_cleaned.json.

运行微调脚本:

cog run python finetune.py

在 40GB A100 GPU 上进行微调大约需要 3.5 小时。对于处理能力较低的 GPU,可能需要更长的时间。

第 5 步:使用 Cog 运行模型

最后,您可以使用 Cog 运行模型。例如:

cog predict -i prompt="Tell me something about alpacas."

响应将是有关羊驼的信息输出,证明您的 LLaMa 模型已成功微调。

3. Vicuna-13B

作为 FastChat 的一部分,Vicuna 利用类似于 GPT 模型的基于转换器的架构,并针对来自 ShareGPT.com 的对话数据集进行了微调。它提供了 ChatGPT 大约 90% 的性能,提供了一种易于访问且具有成本效益的替代方案。尽管性能较低,但 Vicuna 因其出色的可定制性和对广泛任务的适应性而脱颖而出。

有关如何使用它的更多详细信息,请参阅我们关于Vicuna-13B的详细文章。

4. GPT4ALL

Nomic AI 团队的 GPT4ALL 提供了一个基于大量精选数据构建的聊天机器人,例如文字问题、代码、故事、插图和多轮对话。虽然它利用 LLaMa 像 GPT-4 一样进行低延迟 ML 加速,但 GPT4ALL 的优势在于其多样化的数据集和对各种任务的适应性。

以下是 GPT4ALL 的实际应用示例:

更详细的使用方法可以参考我们关于GPT4ALL的详细文章。

5.乌鸦RWKV

RWKV _(在新标签页中打开)(Raven RWKV) 是一个较新的模型,截至我的知识截止日期为 2021 年 9 月。但是,根据您提供的信息,这里有一个关于如何使用它的一般分步指南以及一些代码片段:

首先,您需要安装必要的包。RWKV 包托管在 PyPI 上,您可以使用 pip 安装它:

pip install rwkv

然后,您需要从包中导入模型:

from rwkv.model import RWKV

接下来,您将实例化模型。这涉及指定模型路径和要使用的策略:

model = RWKV(model='/path/to/your/model', strategy='cuda fp16')

这将创建可用于推理的模型实例。

接下来,您将使用模型的forward方法进行推理。此方法有两个参数:输入令牌和状态。对于初始运行,您可以将状态设置为None

out, state = model.forward([187, 510, 1563, 310, 247], None)

然后您可以打印模型的输出:

print(out.detach().cpu().numpy())

然后,对于后续运行,您可以提供上一次运行的状态:

out, state = model.forward([187, 510], None)
out, state = model.forward([1563], state)
out, state = model.forward([310, 247], state)
print(out.detach().cpu().numpy())

本分步指南展示了用于推理的 RWKV 模型的基本用法。请务必注意,具体步骤可能因任务、使用的特定模型权重和其他因素而异。请参阅官方文档以获取最准确的信息。

另外,请记住,这个模型相对较新,自 2021 年 9 月我的知识截止以来,可能已经进行了进一步的开发和改进。始终参考最新和相关的文献和代码库,以获取最新和准确的信息。

6. OpenChatKit

打开聊天工具(在新标签页中打开)为聊天机器人应用程序开发提供完整的工具包,将自己定位为开源 ChatGPT 替代品。虽然在结构方面类似于 GPT 模型,但 OpenChatKit 通过启用指令调整的大型语言模型的训练并为机器人响应提供可扩展的检索系统来增强定制。

第 1 步:设置

确保您具有必要的系统要求和依赖项。您将需要 Git LFS、Miniconda 和 PyTorch 等。提供的environment.yml文件包含所需环境的规范。

首先安装Git LFS和Miniconda,然后设置环境如下:

git lfs install
conda install mamba -n base -c conda-forge
mamba env create -f environment.yml 
conda activate OpenChatKit

第 2 步:与 Pythia-Chat-Base-7B 聊天:

要与模型交互,您可以使用bot.py位于inference目录中的脚本:

python inference/bot.py --model togethercomputer/Pythia-Chat-Base-7B

然后,您可以通过在提供的命令行提示符下输入文本来与模型聊天。

第 3 步:复制 Pythia-Chat-Base-7B:

如果您想自己训练模型,首先需要下载训练数据和基础模型:

python data/OIG/prepare.py
python pretrained/Pythia-6.9B-deduped/prepare.py

然后,您可以使用提供的 shell 脚本微调模型:

bash training/finetune_Pythia-Chat-Base-7B.sh

训练完成后,使用转换工具将模型转换为Huggingface格式:

mkdir huggingface_models
python tools/convert_to_hf_gptneox.py \
   --config-name EleutherAI/pythia-6.9b-deduped \
   --ckpt-path model_ckpts/Pythia-Chat-Base-7B/checkpoint_100 \
   --save-path huggingface_models/Pythia-Chat-Base-7B \
   --n-stages 4 \
   --n-layer-per-stage 8 \
   --fp16

将 替换model_ckpts/Pythia-Chat-Base-7B/checkpoint_100为模型检查点的路径。

第 4 步:测试新模型:

微调模型后,您可以使用bot.py脚本与它聊天:

python inference/bot.py --model ./huggingface_models/Pythia-Chat-Base-7B

步骤 5. 监控:

为了监控训练,OpenChatKit 提供了对 loguru 和 Weights & Biases 的支持。

步骤 6. 实验:检索增强模型

OpenChatKit 还为检索增强模型提供了一项实验性功能。这是通过查询维基百科的 Faiss 索引实现的。您可以通过以下方式运行它:

python data/wikipedia-3sentence-level-retrieval-index/prepare.py
python inference/bot.py --retrieval

请参阅官方 OpenChatKit 文档以获取更详细和准确的信息。这些步骤基于您提供的信息。

七、选择

选择(在新标签页中打开)(Open Pre-trained Transformer) Language Models 在 zero-shot 和 few-shot learning 以及 Stereotypical Bias analysis 方面表现出非凡的能力,尽管它们不符合 ChatGPT 的质量。这些模型是仅解码器的转换器,这意味着它们从左到右自回归地生成文本,类似于 GPT 模型的方法。

以下是关于如何使用 OPT 模型完成每项任务的更详细的分步说明:

第 1 步:文本生成

要使用 OPT 模型生成文本,您首先需要将其加载到管道中。下面是一个使用 Hugging Face 的 transformers 库的例子:

from transformers import pipeline
 
generator = pipeline('text-generation', model="facebook/opt-350m")

设置管道后,您可以生成如下文本:

print(generator("Hello, I am a", max_length=50)[0]['generated_text'])

这将打印以“Hello, I am a”开头的文本,并持续最多 50 个标记。

步骤 2. 零样本学习

零样本学习涉及将模型应用于未专门训练的任务。例如,您无需任何进一步培训即可将其用于文本分类。以下是您的操作方法:

from transformers import pipeline
 
classifier = pipeline("text-classification", model="facebook/opt-350m")
print(classifier("I love sunny days.", ["weather", "emotion"]))

这将对“我喜欢晴天”这句话进行分类。在“天气”和“情绪”方面并打印概率。

第 3 步:小样本学习

Few-shot learning 涉及提供少量示例来帮助模型理解任务。例如,如果您希望模型将英语翻译成法语,您可以提供一些示例翻译:

from transformers import pipeline
 
translator = pipeline('translation', model="facebook/opt-350m")
 
examples = [
    {"English": "Hello", "French": "Bonjour"},
    {"English": "Goodbye", "French": "Au revoir"},
]
 
translator.set_examples(examples)
 
print(translator("Good morning"))

请注意,为了说明起见,此示例过于简单化。实际使用可能有点复杂,需要更复杂的设置。

第 4 步:刻板印象偏见分析

您可以使用 OPT 模型来分析其生成的文本中存在的刻板印象偏见。这是一个例子:

from transformers import pipeline
 
generator = pipeline('text-generation', model="facebook/opt-350m")
 
female_prompt = "The woman worked as a"
male_prompt = "The man worked as a"
 
female_output = generator(female_prompt, num_return_sequences=5)
male_output = generator(male_prompt, num_return_sequences=5)
 
print("Female prompt outputs:")
for output in female_output:
    print(output['generated_text'])
 
print("Male prompt outputs:")
for output in male_output:
    print(output['generated_text'])

这将为每个提示打印 5 个生成的序列,您可以分析这些序列是否存在任何潜在偏差。请注意,此类分析可能是一项复杂的任务,可能需要高级自然语言处理 (NLP) 技术。

请记住,您可能需要根据 Hugging Face Model Hub 上可用的特定 OPT 模型调整模型名称。translator.set_examples(examples)此外,截至我的知识截止日期为 2021 年 9 月, Transformers 库中可能不存在诸如此类的某些函数。它是为了展示一个概念性的例子。

8.法兰-T5-XXL

法兰绒-T5-XXL(在新标签页中打开)是经过微调的 T5 模型的集合,这些模型已经在大量的教学数据集上进行了训练。这些模型虽然不像 GPT 模型那样基于 transformer 架构,但在各种模型类别(包括 PaLM、T5 和 U-PaLM)中表现出显着改进的性能。

要使用 Flan-T5-XXL,您可以按照下面的示例使用指南进行操作:

# Assuming you have already cloned the Flan-T5-XXL repository and set up the environment
 
from flan_t5_xx1 import FlanT5XXL
 
# Initialize the Flan-T5-XXL model
model = FlanT5XXL()
 
# Example usage: Generate instructions for a task
task_input = "How to bake a cake"
instructions = model.generate_instructions(task_input)
print(instructions)

此示例演示如何使用 Flan-T5-XXL 模型为给定任务生成指令。变量task_input包含任务描述,generate_instructions()方法生成相应的指令。

请注意,上面的代码片段假定您已经克隆了 Flan-T5-XXL 存储库并设置了所需的依赖项。

Flan-T5-XXL 提供了一个模块化和可组合的框架,用于训练和评估序列模型,重点是语言任务。它基于 T5 代码库,使用 JAX 和 Flax 实现。Flan-T5-XXL 提供高水平的可配置性和自助服务功能,使研究人员能够训练和评估不同规模的序列模型。

请务必参考 Flan-T5-XXL 提供的官方文档和示例,以全面了解可用功能以及如何有效使用它们。

Flan-T5-XXL 的示例用法如下:

from flan import FlanT5
 
# Initialize model
flan_model = FlanT5()
 
# Generate response
response = flan_model.generate("Translate this text to French.")
print(response)

9.百泽

百泽(在新标签页中打开)是一个使用 LoRA 训练的开源聊天模型。它包含来自 ChatGPT 的 10 万个自生成对话,并利用 Alpaca 的数据来提高性能。推出了7B、13B、30B等不同尺寸的型号。

要使用 Fastchat 的 CLI 和 API 与 Baize 交互,请按照以下步骤操作:

  1. 安装快聊:
pip install git+https://github.com/huggingface/peft.git
pip install git+https://github.com/lm-sys/FastChat.git
  1. 合并 Baize 的 LoRA 权重(仅限 V1 模型):
python3 -m fastchat.model.apply_lora --base huggyllama/llama-7b --target ./model_weights/baize-7b --lora project-baize/baize-lora-7B
  1. 运行 CLI:
python -m fastchat.serve.cli --model-path ./model_weights/baize-7b

Baize 还可以与 OpenAI API 或 Hugging Face API 一起使用。

对于Baize demo,您可以按照以下步骤在本地运行它:

  1. 安装所需的包:
cd demo
pip install -r requirements.txt
  1. 在本地托管模型:
# For V1 models
base_model=huggyllama/llama-7b
lora_model=project-baize/baize-lora-7B
python app.py $base_model $lora_model
 
# For V2 models
base_model=project-baize/baize-v2-7b
python app.py $base_model None

Baize 演示提供了一个用户友好的 Gradio 聊天界面。

这些是简化的示例代码。有关更详细的说明和选项,请参阅 Baize 项目文档。

10.考拉

考拉(在新标签页中打开)是一种 AI 对话模型,通过对从网络收集的对话数据集微调 LLaMA 进行训练。它超越了 Alpaca 的性能,并在各种场景中展示了与 ChatGPT 相当的结果。Koala 的主要优势之一是其广泛的定制性和适应性,训练代码、公共权重和对话微调器的可用性促进了这一点。

在构建由 Koala 提供支持的 100% 免费个人“ChatGPT”机器人的情况下,您可以使用提供的 Colab 笔记本。以下是该过程的概述:

第 1 步:访问 Koala Colab 笔记本

机器学习专家 Sam Witteveen 提供的预配置笔记本可用于运行 Koala 模型。你可以在这里找到笔记本。将笔记本复制到您自己的 Google Drive。

第 2 步:运行笔记本

在您的 Google 云端硬盘中拥有该笔记本后,您就可以执行它。笔记本首先安装必要的模块并导入它们。然后,它使用 transformers 库中的 LlamaTokenizer 和 LlamaForCausalLM 加载预训练模型 samwit/koala-7b。该模型以 8 位模式加载,可与具有成本效益的 GPU 兼容。

from transformers import LlamaTokenizer, LlamaForCausalLM, GenerationConfig, pipeline
import torch
import textwrap
 
tokenizer = LlamaTokenizer.from_pretrained("samwit/koala-7b")
 
base_model = LlamaForCausalLM.from_pretrained(
    "samwit/koala-7b",
    load_in_8bit=True,
    device_map='auto',
)

第 3 步:设置文本生成管道

notebook 使用 Hugging Face 管道方法设置文本生成管道。定义了最大长度、温度和重复惩罚等参数。此外,还提供了一个实用函数 namedwrap_text_preserve_newlines()来增强生成文本的外观。

pipe = pipeline(
    "text-generation",
    model=base_model, 
    tokenizer=tokenizer, 
    max_length=512,
    temperature=0.7,
    top_p=0.95,
    repetition_penalty=1.15
)
 
def wrap_text_preserve_newlines(text, width=110):
    # Split the input text into lines based on newline characters
    lines = text.split('\n')
 
    # Wrap each line individually
    wrapped_lines = [textwrap.fill(line, width=width) for line in lines]
 
    # Join the wrapped lines back together using newline characters
    wrapped_text = '\n'.join(wrapped_lines)
 
    return wrapped_text

第 4 步:参与对话

pipe()该笔记本提供了使用Hugging Face 库中的方法进行提示-响应对话的示例。请务必注意,该模型的成功在很大程度上取决于在每次对话开始时使用适当的提示。Notebook 建议使用以“BEGINNING OF CONVERSATION: USER:”开头的提示来激活所需的逻辑。我们鼓励您尝试使用不同的提示和参数来观察模型的响应。

总体而言,Koala 被证明是 GPT-3 等大型语言模型的有前途的替代品。通过仔细整理训练数据,即使是较小的模型也能提供令人印象深刻的性能。Koala 团队和社区专家通过在线演示和提供的 Google Colab notebook 方便地访问和试验模型。无论您的目标是开发聊天机器人还是进行 LLM 研究而不产生模型使用成本,Koala 都是一个很好的选择。

结论

开源领域有丰富的 ChatGPT 替代方案,每种方案都提供独特的功能。无论您是 AI 爱好者、研究人员还是开发人员,这些工具都可以帮助您构建和微调您自己的对话模型。因此,继续前进,进入开源对话式 AI 的世界。

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

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

相关文章

Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)

前言 若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。 这个开源项目资料比较全,笔者仅在此记录下搭建过程 一、准备 1.操…

移远通信率先完成多场5G NTN技术外场验证,为卫星物联网应用落地提速

近日,由中国电信卫星公司牵头,移远通信联合紫光展锐、鹏鹄物宇等行业上下游合作伙伴,针对现有蜂窝通信在信号覆盖盲区,信息监测数据无法实时回传等痛点问题,以领先行业的速度开展了一系列的5G NTN(non-terr…

Unity入门7——物理系统之碰撞检测

一、刚体 Rigid Body ​ 刚体利用体积(碰撞器 Collider)进行碰撞计算,模拟真实的碰撞效果,产生力的作用 ​ 碰撞产生的必要条件: 两个物体都有碰撞器 Collider至少一个物体有刚体 Mass:质量 默认为千克&a…

postman自动化实战总结

Postman实战总结 简介 本次实战内容主要包括如下几点: l 背景介绍 l Postman使用,侧重于自动化实现,基础使用不做介绍 l 可视化Newman介绍 l 框架特色 l 实战中的坑 背景 随着国内软件技术的高速发展,越来越多的手工测试…

Qgis2threejs

three.js是JavaScript编写的一个开源的3D图形库,它可以用于创建各种各样的交互式3D应用程序和动画。该库提供了一系列的工具和功能,使得在Web浏览器中创建高质量的3D图形变得更加容易。 使用three.js,您可以轻松地创建3D场景,包括…

GoogleNet

Introduction 得益于深度学习的优势和更强大的卷积神经网络的出现,图像分类和目标检测的准确率发生了令人意想不到的进步。在2014年的ILSVRC比赛中,GoogLeNet取得了第一名的成绩,所用模型参数不足AlexNet(2012年冠军)…

基于Java医院住院管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

记录使用gswin64.exe合并多个pdf为一个pdf

目录 下载gs920w64.exe 安装 配置相关信息 验证是否安装配置成功 合并多个pdf文件 下载gs920w64.exe https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/tag/gs920 ​ 安装 正常安装,记住自己的安装目录: ​ 配置相关信息 安装…

限流与令牌桶

一、概述 令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略。 原理 1.令牌以一定的速率放入桶中。 2.每个令牌允许源发送一定数量的比特。 3.发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。 4…

跟着《代码随想录刷题》(六)—— 二叉树

6.1 二叉树的前、中、后序遍历 144.、二叉树的前序遍历&#xff08;中左右&#xff09; LeetCode&#xff1a;114、二叉树的前序遍历 &#xff08;1&#xff09;递归法 class Solution { public:void traversal(TreeNode* cur, vector<int>& vec) {if (cur N…

eslint + prettier如何搭配使用

简介 eslintprettier写代码爽到飞起&#xff0c;既规范了代码的格式&#xff0c;同时也让你的代码美观易读。本文介绍如何在项目中使用eslint搭配prettier来规范你的代码 1.eslint 和 prettier区别 先来回答一个问题&#xff0c;eslint和prettier这二者有啥区别&#xff0c;es…

【后端面经-数据库】MySQL的事务隔离级别简介

【后端面经-数据库】MySQL的事务隔离级别简介 0. 事务的概念1. 三类问题2. 事务隔离级别3. 操作指令4. 总结5. 参考博文 0. 事务的概念 事务指的是一连串的集中操作指令&#xff0c;一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点&#xff0c;简记作A…

表示学习(Representation Learning) Part2--Auto-Encoders、VAEs、GANs

文章目录 Compression:Auto-EncodersCapture parameter distribution (variance): Variational Auto-Encoders原理介绍数学推导生成数据diffusion modelsPros&Cons Train using a second network: GANs 来自Manolis Kellis教授&#xff08;MIT计算生物学主任&#xff09;的…

spark_idea

spark_idea 3、打jar包运行2、code1、pom_xml0、创建数据、模型、预测表0、Windows配置scala环境 3、打jar包运行 ./bin/spark-submit \--class spark02 \--master spark://hadoop102:7077 \--deploy-mode client \/home/gpb/scala_spark2.jar打jar包、存储到虚拟机中 编写执行…

什么是布隆过滤器?如何解决高并发缓存穿透问题?

日常开发中&#xff0c;大家经常使用缓存&#xff0c;但是你知道大型的互联网公司面对高并发流量&#xff0c;要注意缓存穿透问题吗!!! 本文会介绍布隆过滤器&#xff0c;空间换时间&#xff0c;以较低的内存空间、高效解决这个问题。 本篇文章的目录&#xff1a; 1、性能不…

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中&#xff0c;涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写&#xff0c;如下所示&#xff1a; IMX6ULL…

【ROS】RViz使用详解

1、安装 1.1 ROS1-RVIZ RVIZ的ROS1各个ubuntu版本中的安装命令 ubuntu14.04&#xff1a; sudo apt install ros-indigo-rvizubuntu16.04&#xff1a; sudo apt install ros-kinetic-rvizubuntu18.04&#xff1a; sudo apt install ros-melodic-rvizubuntu20.04&#xff1a…

Java厘米级高精准定位系统源码(支持UWB、蓝牙、WIFI定位)

高精准定位系统支持10厘米工业级高精准定位&#xff0c;同时支持UWB&#xff0c;蓝牙&#xff0c;WIFI定位。 ♦高精准定位系统首页为数据统计页面&#xff0c;统计的信息可以分为数量统计、区域告警人数统计、工牌使用量的统计、区域报警率统计以及告警消息的展示。 系统首页…

Pytest教程__常用执行参数详解(3)

前面讲了测试用例的执行方式&#xff0c;也认识了 -v -s 这些参数&#xff0c;那么还有没有其它参数呢&#xff1f;答案肯定是有的&#xff0c;我们可以通过 pytest -h来查看所有可用参数。 从图中可以看出&#xff0c;pytest的参数有很多&#xff0c;但并不是每一个参数都需要…

fiddler高级工具栏中的statistics数据分析工具

Fiddler statistics 板块会统计一个请求开始发出到最终接收并转发的数据&#xff0c;统计和响应的一些信息&#xff1a; 可以使用statistics分页&#xff0c;完成简单的性能测试&#xff0c;查看其接口的响应时间 如图展示&#xff1a; 如图详细解释下每一项的含义&#xff…