“开启中文智能之旅:探秘超乎想象的 Llama2-Chinese 大模型世界”

“开启中文智能之旅:探秘超乎想象的 Llama2-Chinese 大模型世界”

1.国内Llama2最新下载地址

本仓库中的代码示例主要是基于Hugging Face版本参数进行调用,我们提供了脚本将Meta官网发布的模型参数转换为Hugging Face支持的格式,可以直接通过transformers库进行加载:参数格式转化

  • Llama2-7B官网版本:https://pan.xunlei.com/s/VN_kR2fwuJdG1F3CoF33rwpIA1?pwd=z9kf

  • Llama2-7B-Chat官网版本:https://pan.xunlei.com/s/VN_kQa1_HBvV-X9QVI6jV2kOA1?pwd=xmra

  • Llama2-13B官网版本:https://pan.xunlei.com/s/VN_izibaMDoptluWodzJw4cRA1?pwd=2qqb

  • Llama2-13B-Chat官网版本:https://pan.xunlei.com/s/VN_iyyponyapjIDLXJCNfqy7A1?pwd=t3xw

  • Llama2-7B Hugging Face版本:https://pan.xunlei.com/s/VN_t0dUikZqOwt-5DZWHuMvqA1?pwd=66ep

  • Llama2-7B-Chat Hugging Face版本:https://pan.xunlei.com/s/VN_oaV4BpKFgKLto4KgOhBcaA1?pwd=ufir

  • Llama2-13B Hugging Face版本:https://pan.xunlei.com/s/VN_yT_9G8xNOz0SDWQ7Mb_GZA1?pwd=yvgf

  • Llama2-13B-Chat Hugging Face版本:https://pan.xunlei.com/s/VN_yA-9G34NGL9B79b3OQZZGA1?pwd=xqrg

  • Llama2-70B-Chat Hugging Face版本:https://pan.xunlei.com/s/VNa_vCGzCy3h3N7oeFXs2W1hA1?pwd=uhxh#

  • CodeLlama-7b官网版本:https://pan.baidu.com/s/1cIPzdNywWLvQI7_2QanOEQ?pwd=zfwi

  • CodeLlama-7b-Python官网版本:https://pan.baidu.com/s/1liY8klGoDagYbpw-g-oFag?pwd=i952

  • CodeLlama-7b-Instruct官网版本:https://pan.baidu.com/s/108o9_DT2E_vfSGtOnDCQVw?pwd=zkt9

  • CodeLlama-13b官网版本:https://pan.baidu.com/s/1lLaeHv0XEBv0iiZzI1dpnw?pwd=qn99

  • CodeLlama-13b-Python官网版本:https://pan.baidu.com/s/1OLVfvZS_oqL3oqMKwsI87w?pwd=a78k

  • CodeLlama-13b-Instruct官网版本:https://pan.baidu.com/s/1HyxJl4w8wElgkZRh2ATrXQ?pwd=seg6

  • CodeLlama-34b官网版本:https://pan.baidu.com/s/1vEw0pFgIkctPUN4_5_6pIQ?pwd=q8eu

2.Atom大模型

原子大模型Atom由Llama中文社区和原子回声联合打造,在中文大模型评测榜单C-Eval中位居前十(8月21日评测提交时间)。

Atom系列模型包含Atom-7B和Atom-13B,基于Llama2做了中文能力的持续优化。Atom-7B和Atom-7B-Chat目前已完全开源,支持商用,可在Hugging Face仓库获取模型,详情见Atom-7B下载。Atom大模型针对中文做了以下优化:

  • 大规模的中文数据预训练

原子大模型Atom在Llama2的基础上,采用大规模的中文数据进行持续预训练,包含百科、书籍、博客、新闻、公告、小说、金融数据、法律数据、医疗数据、代码数据、专业论文数据、中文自然语言处理竞赛数据集等,详见📝 数据来源。

同时对庞大的数据进行了过滤、打分、去重,筛选出超过1T token的高质量中文数据,持续不断加入训练迭代中。

  • 更高效的中文词表
    为了提高中文文本处理的效率,我们针对Llama2模型的词表进行了深度优化。首先,我们基于数百G的中文文本,在该模型词表的基础上扩展词库至65,000个单词。经过测试,我们的改进使得中文编码/解码速度提高了约350%。此外,我们还扩大了中文字符集的覆盖范围,包括所有emoji符号😊。这使得生成带有表情符号的文章更加高效。

  • 自适应上下文扩展
    Atom大模型默认支持4K上下文,利用位置插值PI和Neural Tangent Kernel (NTK)方法,经过微调可以将上下文长度扩增到32K。

2.1 中文数据

我们通过以下数据来优化Llama2的中文能力:

类型描述
网络数据互联网上公开的网络数据,挑选出去重后的高质量中文数据,涉及到百科、书籍、博客、新闻、公告、小说等高质量长文本数据。
Wikipedia中文Wikipedia的数据
悟道中文悟道开源的200G数据
ClueClue开放的中文预训练数据,进行清洗后的高质量中文长文本数据
竞赛数据集近年来中文自然语言处理多任务竞赛数据集,约150个
MNBVCMNBVC 中清洗出来的部分数据集

2.2 模型部署

Meta在🤗Hugging Face上提供了所有模型的下载链接:https://huggingface.co/meta-llama

Llama中文社区的中文模型下载链接:https://huggingface.co/FlagAlpha

2.2.1模型下载

Meta官方Llama2模型

Llama2预训练模型包含7B、13B和70B三个版本。Llama2-Chat模型基于预训练模型进行了监督微调,具备更强的对话能力。

类别模型名称🤗模型加载名称下载地址
预训练Llama2-7Bmeta-llama/Llama-2-7b-hf模型下载
预训练Llama2-13Bmeta-llama/Llama-2-13b-hf模型下载
预训练Llama2-70Bmeta-llama/Llama-2-70b-hf模型下载
ChatLlama2-7B-Chatmeta-llama/Llama-2-7b-chat-hf模型下载
ChatLlama2-13B-Chatmeta-llama/Llama-2-13b-chat-hf模型下载
ChatLlama2-70B-Chatmeta-llama/Llama-2-70b-chat-hf模型下载
基于Llama2的中文微调模型

我们基于中文指令数据集对Llama2-Chat模型进行了微调,使得Llama2模型有着更强的中文对话能力。LoRA参数以及与基础模型合并的参数均已上传至Hugging Face,目前包含7B和13B的模型。

类别模型名称🤗模型加载名称基础模型版本下载地址
合并参数Llama2-Chinese-7b-ChatFlagAlpha/Llama2-Chinese-7b-Chatmeta-llama/Llama-2-7b-chat-hf模型下载
合并参数Llama2-Chinese-13b-ChatFlagAlpha/Llama2-Chinese-13b-Chatmeta-llama/Llama-2-13b-chat-hf模型下载
LoRA参数Llama2-Chinese-7b-Chat-LoRAFlagAlpha/Llama2-Chinese-7b-Chat-LoRAmeta-llama/Llama-2-7b-chat-hf模型下载
LoRA参数Llama2-Chinese-13b-Chat-LoRAFlagAlpha/Llama2-Chinese-13b-Chat-LoRAmeta-llama/Llama-2-13b-chat-hf模型下载
基于Llama2的中文预训练模型Atom

社区提供预训练版本Atom-7B和基于Atom-7B进行对话微调的模型参数供开放下载,模型参数会持续不断更新,关于模型的进展详见社区官网llama.family。

类别模型名称🤗模型加载名称下载地址
预训练Atom-7BFlagAlpha/Atom-7B模型下载
ChatAtom-7B-ChatFlagAlpha/Atom-7B-Chat模型下载

2.2.2 模型调用代码示例

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('FlagAlpha/Atom-7B',device_map='auto',torch_dtype=torch.float16,load_in_8bit=True)
model =model.eval()
tokenizer = AutoTokenizer.from_pretrained('FlagAlpha/Atom-7B',use_fast=False)
tokenizer.pad_token = tokenizer.eos_token
input_ids = tokenizer(['<s>Human: 介绍一下中国\n</s><s>Assistant: '], return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')        
generate_input = {"input_ids":input_ids,"max_new_tokens":512,"do_sample":True,"top_k":50,"top_p":0.95,"temperature":0.3,"repetition_penalty":1.3,"eos_token_id":tokenizer.eos_token_id,"bos_token_id":tokenizer.bos_token_id,"pad_token_id":tokenizer.pad_token_id
}
generate_ids  = model.generate(**generate_input)
text = tokenizer.decode(generate_ids[0])
print(text)

2.2.3 FastAPI接口搭建

为了方便通过API方式调用模型,我们提供了脚本用来快速搭建FastAPI接口,相关测试代码与API参数设置见API 调用。

2.2.4 Gradio快速搭建问答平台

基于gradio搭建的问答界面,实现了流式的输出,将下面代码复制到控制台运行,以下代码以Atom-7B模型为例,不同模型只需修改一下代码里的模型名称就好了😊

python examples/chat_gradio.py --model_name_or_path FlagAlpha/Atom-7B

2.2.5 Docker部署问答接口

详情参见:Docker部署

第一步:准备docker镜像,通过docker容器启动chat_gradio.py

git clone https://github.com/FlagAlpha/Llama2-Chinese.gitcd Llama2-Chinesedocker build -f docker/Dockerfile -t flagalpha/llama2-chinese-7b:gradio .

第二步:通过docker-compose启动chat_gradio

cd Llama2-Chinese/docker
doker-compose up -d --build

2.3模型预训练

虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱。为了能够提升模型的中文能力,可以采用微调和预训练两种路径,其中:

  • 微调需要的算力资源少,能够快速实现一个中文Llama的雏形。但缺点也显而易见,只能激发基座模型已有的中文能力,由于Llama2的中文训练数据本身较少,所以能够激发的能力也有限,治标不治本。

  • 基于大规模中文语料进行预训练,成本高,不仅需要大规模高质量的中文数据,也需要大规模的算力资源。但是优点也显而易见,就是能从模型底层优化中文能力,真正达到治本的效果,从内核为大模型注入强大的中文能力。

我们为社区提供了Llama模型的预训练代码,以及中文测试语料,更多数据可以参考中文语料。具体代码和配置如下:

  • 模型预训练脚本:train/pretrain/pretrain.sh
  • 预训练实现代码:train/pretrain/pretrain_clm.py
  • DeepSpeed加速:
    • 对于单卡训练,可以采用ZeRO-2的方式,参数配置见 train/pretrain/ds_config_zero2.json
    • 对于多卡训练,可以采用ZeRO-3的方式,参数配置见 train/pretrain/ds_config_zero3.json
  • 训练效果度量指标:train/pretrain/accuracy.py

2.4 模型微调

本仓库中同时提供了LoRA微调和全量参数微调代码,关于LoRA的详细介绍可以参考论文“LoRA: Low-Rank Adaptation of Large Language Models”以及微软Github仓库LoRA。

Step1: 环境准备

根据requirements.txt安装对应的环境依赖。

Step2: 数据准备

在data目录下提供了一份用于模型sft的数据样例:

  • 训练数据:data/train_sft.csv
  • 验证数据:data/dev_sft.csv

每个csv文件中包含一列“text”,每一行为一个训练样例,每个训练样例按照以下格式将问题和答案组织为模型输入,您可以按照以下格式自定义训练和验证数据集:

"<s>Human: "+问题+"\n</s><s>Assistant: "+答案

例如,

<s>Human: 用一句话描述地球为什么是独一无二的。</s><s>Assistant: 因为地球是目前为止唯一已知存在生命的行星。</s>

Step3: 微调脚本

LoRA微调

LoRA微调脚本见:train/sft/finetune_lora.sh,关于LoRA微调的具体实现代码见train/sft/finetune_clm_lora.py,单机多卡的微调可以通过修改脚本中的--include localhost:0来实现。

全量参数微调

全量参数微调脚本见:train/sft/finetune.sh,关于全量参数微调的具体实现代码见train/sft/finetune_clm.py。

Step4: 加载微调模型

LoRA微调

基于LoRA微调的模型参数见:基于Llama2的中文微调模型,LoRA参数需要和基础模型参数结合使用。

通过PEFT加载预训练模型参数和微调模型参数,以下示例代码中,base_model_name_or_path为预训练模型参数保存路径,finetune_model_path为微调模型参数保存路径。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel,PeftConfig
#例如: finetune_model_path='FlagAlpha/Llama2-Chinese-7b-Chat-LoRA'
finetune_model_path=''  
config = PeftConfig.from_pretrained(finetune_model_path)
#例如: base_model_name_or_path='meta-llama/Llama-2-7b-chat'
tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path,use_fast=False)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path,device_map='auto',torch_dtype=torch.float16,load_in_8bit=True)
model = PeftModel.from_pretrained(model, finetune_model_path, device_map={"": 0})
model =model.eval()
input_ids = tokenizer(['<s>Human: 介绍一下北京\n</s><s>Assistant: '], return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')        
generate_input = {"input_ids":input_ids,"max_new_tokens":512,"do_sample":True,"top_k":50,"top_p":0.95,"temperature":0.3,"repetition_penalty":1.3,"eos_token_id":tokenizer.eos_token_id,"bos_token_id":tokenizer.bos_token_id,"pad_token_id":tokenizer.pad_token_id
}
generate_ids  = model.generate(**generate_input)
text = tokenizer.decode(generate_ids[0])
print(text)
全量参数微调

对于全量参数微调的模型,调用方式同模型调用代码示例,只需要修改其中的模型名称或者保存路径即可。

2.5模型量化

我们对中文微调的模型参数进行了量化,方便以更少的计算资源运行。目前已经在Hugging Face上传了13B中文微调模型FlagAlpha/Llama2-Chinese-13b-Chat的4bit压缩版本FlagAlpha/Llama2-Chinese-13b-Chat-4bit,具体调用方式如下:

from transformers import AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM
model = AutoGPTQForCausalLM.from_quantized('FlagAlpha/Llama2-Chinese-13b-Chat-4bit', device="cuda:0")
tokenizer = AutoTokenizer.from_pretrained('FlagAlpha/Llama2-Chinese-13b-Chat-4bit',use_fast=False)
input_ids = tokenizer(['<s>Human: 怎么登上火星\n</s><s>Assistant: '], return_tensors="pt",add_special_tokens=False).input_ids.to('cuda')        
generate_input = {"input_ids":input_ids,"max_new_tokens":512,"do_sample":True,"top_k":50,"top_p":0.95,"temperature":0.3,"repetition_penalty":1.3,"eos_token_id":tokenizer.eos_token_id,"bos_token_id":tokenizer.bos_token_id,"pad_token_id":tokenizer.pad_token_id
}
generate_ids  = model.generate(**generate_input)
text = tokenizer.decode(generate_ids[0])
print(text)

2.6 推理加速

随着大模型参数规模的不断增长,在有限的算力资源下,提升模型的推理速度逐渐变为一个重要的研究方向。常用的推理加速框架包含 lmdeploy、FasterTransformer、vLLM和JittorLLMs 等。

FasterTransformer

FasterTransformer由NVIDIA开发,采用C++/CUDA编写,支持分布式推理,transformer编码器和解码器均可进行加速。
通过FasterTransformer和Triton加速LLama2模型推理,目前支持FP16或者Int8推理,Int4目前还不支持。

详细的推理文档见:inference-speed/GPU/FasterTransformer_example

vLLM

vLLM由加州大学伯克利分校开发,核心技术是PageAttention,吞吐量比HuggingFace Transformers高出24倍。相较与FasterTrainsformer,vLLM更加的简单易用,不需要额外进行模型的转换,支持fp16推理。

详细的推理文档见:inference-speed/GPU/vllm_example

JittorLLMs

JittorLLMs由非十科技领衔,与清华大学可视媒体研究中心合作研发,通过动态swap机制大幅降低硬件配置要求(减少80%),并且Jittor框架通过零拷贝技术,大模型加载相比Pytorch开销降低40%,同时,通过元算子自动编译优化,计算性能提升20%以上。

详细的推理文档见:inference-speed/GPU/JittorLLMs

lmdeploy

lmdeploy 由上海人工智能实验室开发,推理使用 C++/CUDA,对外提供 python/gRPC/http 接口和 WebUI 界面,支持 tensor parallel 分布式推理、支持 fp16/weight int4/kv cache int8 量化。

详细的推理文档见:inference-speed/GPU/lmdeploy_example

2.7 模型评测

为了能够更加清晰地了解Llama2模型的中文问答能力,我们筛选了一些具有代表性的中文问题,对Llama2模型进行提问。我们测试的模型包含Meta公开的Llama2-7B-Chat和Llama2-13B-Chat两个版本,没有做任何微调和训练。测试问题筛选自AtomBulb,共95个测试问题,包含:通用知识、语言理解、创作能力、逻辑推理、代码编程、工作技能、使用工具、人格特征八个大的类别。

测试中使用的Prompt如下,例如对于问题“列出5种可以改善睡眠质量的方法”:

[INST] 
<<SYS>>
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe.  Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature. The answer always been translate into Chinese language.If a question does not make any sense, or is not factually coherent, explain why instead of answering something not correct. If you don't know the answer to a question, please don't share false information.The answer always been translate into Chinese language.
<</SYS>>列出5种可以改善睡眠质量的方法
[/INST]

Llama2-7B-Chat的测试结果见meta_eval_7B.md,Llama2-13B-Chat的测试结果见meta_eval_13B.md。

通过测试我们发现,Meta原始的Llama2 Chat模型对于中文问答的对齐效果一般,大部分情况下都不能给出中文回答,或者是中英文混杂的形式。因此,基于中文数据对Llama2模型进行训练和微调十分必要,我们的中文版Llama2模型也已经在训练中,近期将对社区开放。

2.8 外延能力

除了持续增强大模型内在的知识储备、通用理解、逻辑推理和想象能力等,未来,我们也会不断丰富大模型的外延能力,例如知识库检索、计算工具、WolframAlpha、操作软件等。
我们首先集成了LangChain框架,可以更方便地基于Llama2开发文档检索、问答机器人和智能体应用等,关于LangChain的更多介绍参见LangChain。

LangChain

针对LangChain框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,简单的调用代码示例如下:

from llama2_for_langchain import Llama2#这里以调用4bit量化压缩的Llama2-Chinese参数FlagAlpha/Llama2-Chinese-13b-Chat-4bit为例
llm = Llama2(model_name_or_path='FlagAlpha/Llama2-Chinese-13b-Chat-4bit', bit4=True)while True:human_input = input("Human: ")response = llm(human_input)print(f"Llama2: {response}")

2.9 代码模型

Meta官方在2023年8月24日发布了Code Llama,基于代码数据对Llama2进行了微调,提供三个不同功能的版本:基础模型(Code Llama)、Python专用模型(Code Llama - Python)和指令跟随模型(Code Llama - Instruct),包含7B、13B、34B三种不同参数规模。不同模型能力区别如下表所示:

模型类别模型名称代码续写代码填充指令编程
Code LlamaCodeLlama-7b
CodeLlama-13b
CodeLlama-34b
Code Llama - PythonCodeLlama-7b-Python
CodeLlama-13b-Python
CodeLlama-34b-Python
Code Llama - InstructCodeLlama-7b-Instruct
CodeLlama-13b-Instruct
CodeLlama-34b-Instruct

我们提供了Code Llama的国内下载链接以及在线体验地址llama.family,关于Code Llama的详细信息可以参考官方Github仓库codellama。

3.学习资料

  • Meta官方对于Llama2的介绍
    自从Meta公司发布第一代LLaMA模型以来,羊驼模型家族繁荣发展。近期Meta发布了Llama2版本,开源可商用,在模型和效果上有了重大更新。Llama2总共公布了7B、13B和70B三种参数大小的模型。相比于LLaMA,Llama2的训练数据达到了2万亿token,上下文长度也由之前的2048升级到4096,可以理解和生成更长的文本。Llama2 Chat模型基于100万人类标记数据微调得到,在英文对话上达到了接近ChatGPT的效果。

  • Llama相关论文

  • LLaMA: Open and Efficient Foundation Language Models

  • Llama 2: Open Foundation and Fine-Tuned Chat Models

  • Code Llama: Open Foundation Models for Code

  • Llama2的评测结果

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

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

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

相关文章

QT CmakeLists配置python

这是exe目录&#xff0c;要放到这里&#xff0c;要放到这里&#xff0c;要放到这里。 find_package(PythonLibs 3.6 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS})set(PY python/libs/) set(PY_LIBS ${PY}_tkinter ${PY}python3 ${PY}python36 ${PY}python36_d) targ…

排序算法——直接插入排序

一、介绍 插入排序就是将前两个元素排好&#xff0c;再将第三个元素通过与前边的元素比较后插入适当的位置&#xff0c;再将第四个元素插入&#xff0c;不断重复插入与前边元素比较的操作&#xff0c;直到将元素都排列好。 演示如下&#xff1a; 视频演示&#xff1a;…

京东数据分析平台:9月中上旬白酒消费市场数据分析

9月份&#xff0c;围绕白酒的热点不断。9月5日&#xff0c;瑞幸咖啡官微发布消息称&#xff0c;瑞幸与贵州茅台跨界合作推出的酱香拿铁刷新单品纪录&#xff0c;首日销量突破542万杯&#xff0c;销售额破1亿元。9月14日&#xff0c;贵州茅台官微发布消息称与德芙推出联名产品“…

软件培训测试高级工程师多测师肖sir__html之作业11

html之作业 案例1&#xff1a; 截图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单</title></head><body><table style"background-color:red" bo…

【C++】list基本接口+手撕 list(详解迭代器)

父母就像迭代器&#xff0c;封装了他们的脆弱...... 手撕list目录&#xff1a; 一、list的常用接口及其使用 1.1list 构造函数与增删查改 1.2list 特殊接口 1.3list 排序性能分析 二、list 迭代器实现&#xff08;重点难点&#xff09; 关于迭代器的引入知识&#xff1a…

Mac mov转mp4,详细转换步骤

Mac mov转mp4怎么转&#xff1f;视频文件格式为.mov是由Apple公司所开发的特殊格式。因其只能在苹果设备上播放&#xff0c;与他人分享时就会变得困难。为此&#xff0c;我们通常会选择使用MP4这种最受欢迎的视频格式。在日常使用中&#xff0c;MP4成为了大家首选的视频格式。而…

onlyoffice历史版本功能实现

一&#xff1a;开启客户端配置 如果不开启&#xff0c;回调请求里面的history和changeUrl是空 二&#xff1a;客户端主要实现2个回调函数 1.实现onRequestHistory事件&#xff0c;该事件会在ui点击查看历史的时候发起,用于展示历史列表 关键在于获取到history的内容&#xff…

写爬虫?前端er何必用python

前言 说起网络爬虫,很多人第一时间想到python,但爬虫并非只能用python实现,虽然网上大部分爬虫文章都在说python爬虫,但对于前端程序员来说,我觉得js才是最屌的(对于简单爬取任务来说,复杂的我暂时没碰到~),下面说说我的经验(是的,仅限本人经验),希望能给各位前…

Oracle修改数据之后提交事务如何回滚?

在 MySQL 和 Oracle 数据库中&#xff0c;事务提交后都无法回滚。 在 MySQL 中&#xff0c;恢复机制是通过回滚日志&#xff08;undo log&#xff09;实现的&#xff0c;所有事务进行的修改都会先记录到这个回滚日志中&#xff0c;然后在对数据库中的对应行进行写入。当事务已经…

kafka广播消费组停机后未删除优化

背景 kafka广播消息的时候为了保证groupId不重复&#xff0c;再创建的时间采用前缀时间戳的形式&#xff0c;这样可以保证每次启动的时候是创建的新的&#xff0c;但是 会出现一个问题&#xff1a;就是每次停机或者重启都会新建一个应用实例&#xff0c;关闭应用后并不会删除…

Bun v1.0.3 发布,Zig 编写的 JavaScript 运行时

导读Bun 发布了其最新版本 v1.0.3&#xff0c;这是一个集 JavaScript 运行时、打包器、转译器和包管理器于一体的工具。这次的更新不仅修复了众多已知的问题&#xff0c;还引入了一系列令人期待的新功能。 首先&#xff0c;Bun 在这个版本中增加了对 TypeScript 的 emitDecora…

Java架构师主流架构设计模式

目录 1 主流架构设计模式1.1 分层架构模式1.1.1 分层架构的一些常见原则1.1.2 分层的单向依赖原则1.1.3 无循环依赖的原则1.1.4 避免跨层通信的原则1.2 微服务架构模式1.3 基于事件的架构模式2 整洁架构3 六边形架构4 微内核架构模式5 基于空间的架构模式6 道过滤器模式和代理模…

31 数据分析(中)numpy介绍

文章目录 工具excelTableauPower Queryjupytermatplotlibnumpy安装导入包快速掌握&#xff08;bushi&#xff09;array和list的相互转化 np的range多维数组的属性array的改变形状array升降维度array内元素的类型数和array的运算array之间的加减法认识轴切片条件与逻辑修改值app…

XPS测试仪器-科学指南针

在做 X 射线光电子能谱(XPS)测试时&#xff0c;科学指南针检测平台工作人员在与很多同学沟通中了解到&#xff0c;好多同学仅仅是通过文献或者师兄师姐的推荐对XPS测试有了解&#xff0c;但是对于其测试仪器还属于小白阶段&#xff0c;针对此&#xff0c;科学指南针检测平台团队…

练[HarekazeCTF2019]encode_and_encode

[HarekazeCTF2019]encode_and_encode 文章目录 [HarekazeCTF2019]encode_and_encode掌握知识解题思路代码分析 关键paylaod 掌握知识 ​ JSON对Unicode字符的解析转义&#xff0c;json格式的构建&#xff0c;代码审计&#xff0c;php伪协议的利用&#xff0c;file_get_content…

ELK集群 日志中心集群、kafka、logstash

ES&#xff1a;用来日志存储 Logstash:用来日志的搜集&#xff0c;进行日志格式转换并且传送给别人&#xff08;转发&#xff09; Kibana:主要用于日志的展示和分析 kafka Filebeat:搜集文件数据 es-1 本地解析 vi /etc/hosts scp /etc/hosts es-2:/etc/hosts scp /etc…

px4仿真实现无人机自主飞行

一,确定消息类型 无人机通过即在电脑是现自主飞行:思路如下。 通过Mavros功能包,将ROS消息转换为Mavlink消息。实现对无人机的控制。 几种消息之间的关系如下: 对于ROS数据,就是我们机载电脑执行ROS系统的数据。 对于Mavros消息,就是Mavros功能包内部的消息。查询网站…

Maven 环境配置

Maven 是一个基于 Java 的工具&#xff0c;所以要做的第一件事情就是安装 JDK。 系统要求 项目 要求 JDK Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上 内存 没有最低要求 磁盘 Maven 自身安装需要大约 10 MB 空间…

振弦采集仪应用于隧道安全监测

振弦采集仪应用于隧道安全监测 振弦采集仪是当今必不可少的现代隧道安全监测工具。该设备广泛应用于隧道内部各种安全参数的实时监测&#xff0c;包括但不限于隧道变形、裂缝、压力、温度等。本文详细介绍了振弦采集仪在隧道安全监测中的应用。 首先&#xff0c;我们来了解一下…

STM32使用HAL库驱动DS3231

1、STM32通讯口配置 启动IIC&#xff0c;默认配置即可。 2、头文件 #ifndef __DS3231_H #define __DS3231_H#include "main.h"#define DS3231_COM_PORT hi2c1 /*通讯端口*//**************************** defines *******************************/ #define DS3231…