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

Qwen2-Audio系列学习笔记

模型介绍

GitHub - QwenLM/Qwen2-Audio: The official repo of Qwen2-Audio chat & pretrained large audio language model proposed by Alibaba Cloud.

https://arxiv.org/pdf/2407.10759

https://zhuanlan.zhihu.com/p/712987238

We introduce the latest progress of Qwen-Audio, a large-scale audio-language model called Qwen2-Audio, which is capable of accepting various audio signal inputs and performing audio analysis or direct textual responses with regard to speech instructions. We introduce two distinct audio interaction modes:

  • voice chat: users can freely engage in voice interactions with Qwen2-Audio without text input;
  • audio analysis: users could provide audio and text instructions for analysis during the interaction;

We've released two models of the Qwen2-Audio series: Qwen2-Audio-7B and Qwen2-Audio-7B-Instruct.

根据 Qwen2-Audio 技术报告,它在语音聊天和音频分析之间实现了无缝切换,不需要明确的系统提示。这两种模式是联合训练的,用户可以自然地与模型交互,模型会根据输入(语音或文本)智能地理解用户的意图,并自动选择适合的模式。

  • 语音聊天模式:允许用户进行自由的语音对话,可以直接通过语音与模型互动并获取实时响应。
  • 音频分析模式:用户可以通过音频或文本输入,要求模型对音频内容进行分析,例如检测声音、对话或其他音频信息。

这种设计使得用户无需手动切换模式,模型会根据交互内容自动适应两种模式的需求,提供流畅的用户体验。

  • 2024.8.9 🎉 We released the checkpoints of both Qwen2-Audio-7B and Qwen2-Audio-7B-Instruct on ModelScope and Hugging Face.
  • 2024.7.15 🎉 We released the paper of Qwen2-Audio, introducing the relevant model structure, training methods, and model performance. Check our report for details!
  • 2023.11.30 🔥 We released the Qwen-Audio series.

预训练

训练策略

Model Architecture The training process of Qwen2-Audio is depicted in Figure 2, which contains an audio

encoder and a large language model. Given the paired data (a,x), where the a and x denote the audio

sequences and text sequences, the training objective is to maximize the next text token probability as

Pθ(xt|x<t,Encoderϕ(a)),(1) conditioning on audio representations and previous text sequences x<t, where θ and ϕ denote the trainable parameters of the LLM and audio encoder respectively.

Different from Qwen-Audio, the initialization of the audio encoder of Qwen2-Audio is based on the Whisper large-v3 model (Radford et al., 2023). To preprocess the audio data, we resamples it to a frequency of 16kHz and converts the raw waveform into 128-channel mel-spectrogram using a window size of 25ms and a hop size of 10ms. Additionally, a pooling layer with a stride of two is incorporated to reduce the length of the audio representation. As a result, each frame of the encoder output approximately corresponds to a 40ms segment of the original audio signal. Qwen2-Audio still incorporates the large language model Qwen-7B (Bai et al., 2023) as its foundational component. The total parameters of Qwen2-Audio is 8.2B parameters.

训练过程如图2所示,其中包含一个音频编码器和一个大型语言模型。给定配对数据(a, x),其中a和x表示音频序列和文本序列,训练目标是最大化下一个文本标记的概率为:

以音频表示和以前的文本序列x<t为条件,其中θ和φ分别表示LLM和音频编码器的可训练参数。

与Qwen2-Audio不同的是,Qwen2-Audio的音频编码器初始化是基于Whisperlarge-v3模型。
Qwen2-Audio仍然将大型语言模型Qwen-7B作为其基础组件。
Qwen2-Audio的总参数为8.2亿个参数。


Pre-training 预训练阶段

At the pre-training stage, we replace the hierarchical tags (Chu et al., 2023) with the nat ural language prompts. As shown in Figure 2. We find that using language prompts can improve better generalization ability and better instruction following ability.

在预训练阶段,我们将分层标签替换为自然语言提示。如图2所示。我们发现,使用语言提示可以提高更好的泛化能力和更好的指令跟随能力。

Supervised Fine-tuning 监督微调阶段

The thorough pretraining of Qwen2-Audio has equipped the model with a comprehensive understanding of audio content. Building upon this, we employ instruction-based fine-tuning techniques to improve the ability of the model to align with human intent, resulting in an interactive chat model.

Our prelimilary study emphasizes the critical influence of the quality and complexity of SFT data on the model’s performance. Accordingly, a meticulously curated set of high-quality SFT data was collected, with rigorous quality control procedures implemented

We consider two distinct modes for human interactions:

• AudioAnalysis: In the audio analysis mode, users are afforded the flexibility to have Qwen2-Audio analyze a diverse array of audio. User instructions can be given either through audio or text. This mode is often used for offline analysis of audio files.

• Voice Chat: In the voice chat mode, users are encouraged to engage in voice conversations with Qwen2-Audio, asking a wide range of questions. Please feel free to consider it your voice chat assistant.

This mode is often used for online interaction with LALMs. For consistency and model uniformity, both interaction modes were jointly trained, thus users will not experience mode differentiation during use, nor is it necessary to switch between different modes using separate system prompts. The two modes are seamlessly integrated in actual use

Qwen2-Audio 的彻底预训练配备了对音频内容的全面理解的模型。在此基础上,我们采用基于指令的微调技术来提高模型与人类意图对齐的能力,从而产生交互式聊天模型。

我们的初步研究强调了SFT数据的质量和复杂性对模型性能的关键影响。因此,收集了一组精心策划的高质量SFT数据,实现了严格的质量控制程序。

我们考虑两种不同的人机交互模式:

•音频分析: 在音频分析模式下,用户可以灵活地使用Qwen2-Audio分析各种音频。用户指令可以通过音频或文本给出。该模式通常用于音频文件的离线分析。
•语音聊天:在语音聊天模式下,鼓励用户与Qwen2-Audio进行语音对话,询问各种问题。把它当作你的语音聊天助手。这种模式通常用于与lalm进行在线交互。

为了一致性和模型的统一性,两种交互模式是联合训练的,用户在使用过程中不会出现模式差异,也不需要使用单独的系统提示在不同模式之间切换。两种模式在实际使用中无缝结合。


Direct Preference Optimization偏好优化

We employ DPO (Rafailov et al., 2024) to further optimize models to follow human preferences

我们使用 DPO 进一步优化模型以遵循人类偏好。

评测

We evaluated the Qwen2-Audio's abilities on 13 standard benchmarks as follows:

语音转文字翻译 (Speech-to-Text Translation, S2TT) 是一个引人注目的研究和应用领域,它将一种语言的语音转换为另一种语言的文本,从而实现无缝跨语言交流。

近年来的一项创新是使用端到端(E2E)模型,将音频编码和文本解码整合到一个过程之中。这种方法相比传统的分级系统减少了延迟,并最大限度地减少错误传播。例如,SeamlessM4T 模型 不仅支持 S2TT,还支持语音到语音和文本到文本的翻译,涵盖近百种语言。另一个创新方法是使用解码器式的大型语言模型 (LLMs),它们能直接处理语音表征以生成翻译文本。

在语音转文字翻译 (S2TT) 中,BLEU (Bilingual Evaluation Understudy) 是一种常用的评估指标,用于衡量机器翻译结果与人工参考翻译之间的相似度。它通过比较翻译文本中的n-grams(如单词、双词组等)与参考翻译中的 n-grams 的匹配程度来计算分数。

具体来说,BLEU 分数的范围是从 0 到 1,其中:

  • 1 表示机器翻译与参考翻译完全一致(这种情况非常罕见)。
  • 0 表示没有任何匹配。

在 CoVoST2 数据集的测试中,BLEU 分数用于评估模型在不同语言对之间的翻译质量。例如,英语到德语 (en-de) 或中文到英语 (zh-en) 的翻译性能。分数越高,说明模型生成的翻译越接近人工翻译

推理

Voice Chat Inference

conversation = [{"role": "user", "content": [{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/guess_age_gender.wav"},]},{"role": "assistant", "content": "Yes, the speaker is female and in her twenties."},{"role": "user", "content": [{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/translate_to_chinese.wav"},]},
]

第一个url的音频:https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/guess_age_gender.wav,是一个年轻女生说法,让模型猜测性别和年年;“I heard that you can understand what people say and even know their're age and gender so can you guess my age and gender from my voice?”

第二个url的音频:“Everyone wants to be appreciated, so if you appreciate someone, don't keep it a secret.”

Audio Analysis Inference

conversation = [{'role': 'system', 'content': 'You are a helpful assistant.'}, {"role": "user", "content": [{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/glass-breaking-151256.mp3"},{"type": "text", "text": "What's that sound?"},]},{"role": "assistant", "content": "It is the sound of glass shattering."},{"role": "user", "content": [{"type": "text", "text": "What can you do when you hear that?"},]},{"role": "assistant", "content": "Stay alert and cautious, and check if anyone is hurt or if there is any damage to property."},{"role": "user", "content": [{"type": "audio", "audio_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2-Audio/audio/1272-128104-0000.flac"},{"type": "text", "text": "What does the person say?"},]},
]

第一个audio_url是一个玻璃打碎的声音;

第二个audio_url对应的内容是:“mr quilter is the apostle of the middle classes and we are glad to welcome his gospel.”

Batch Inference

Batch Inference 是指一次性对多个输入数据进行推理或预测的过程,而不是逐一单独处理每个输入。这种方法常用于提高机器学习模型的处理效率,尤其是在批量数据处理中。

例如,在语音处理任务中,如语音转文字翻译(S2TT),如果您有多个音频文件需要转换和翻译,可以将它们打包成一个批次(batch)输入模型。这不仅能充分利用硬件资源(如 GPU 的并行计算能力),还可以减少每次单独加载数据的开销,从而提升整体性能。

以下是 Batch Inference 的优点:

  1. 高效性:同时处理多个输入可以减少时间开销。
  2. 一致性:确保对数据处理的设置和模型参数保持一致。
  3. 资源优化:充分利用硬件的计算能力,尤其是 GPU。

总结

In this paper, we present Qwen2-Audio, which builds upon Qwen-Audio’s capability to analyze various types of audio while also being endowed with voice interaction abilities.

During the pre-training stage, we utilized natural language prompts for different data and tasks and have further expanded the data volume.

In the SFT phase, we enhanced Qwen2-Audio’s alignment with human interaction by increasing the quantity, quality, and complexity of SFT data, thereby enabling seamless voice and text interactions. Additionally, we improved Qwen2-Audio’s response quality through the DPO stage.

Objective metrics tested on diverse benchmarks demonstrate Qwen2-Audio’s proficiency in audio understanding and dialogue capabilities. The cases presented within the paper also illustrate Qwen2-Audio’s fluent and flexible voice interaction capability.

在本文中,我们提出了Qwen2-Audio,它建立在Qwen2-Audio分析各种类型音频的能力的基础上,同时也被赋予了语音交互能力。

在预训练阶段,我们对不同的数据和任务使用自然语言提示进一步扩大了数据量
在SFT阶段,我们通过增加SFT数据的数量质量和复杂性来增强Qwen2-Audio与人类交互的一致性,从而实现无缝的语音和文本交互
此外,我们通过DPO阶段提高了Qwen2-Audio的响应质量。

在不同的基准测试中,客观指标证明了Qwen2-Audio在音频理解和对话能力方面的熟练程度。
case study也说明了Qwen2-Audio流畅灵活的语音交互能力

上手实战

说明

音频分析模式,对应着阿里百炼的音频理解能力,

音频理解_大模型服务平台百炼(Model Studio)-阿里云帮助中心

模型可使用开源的

  • 支持的音频文件
    • 音频文件大小不超过10 MB。
    • 音频的时长建议不超过30秒,如果超过30秒,模型会自动截取前30秒的音频。
    • 音频文件的格式支持大部分常见编码的音频格式,例如AMR、WAV(CodecID: GSM_MS)、WAV(PCM)、3GP、3GPP、AAC、MP3等。
    • 音频中支持的语言包括中文、英语、粤语、法语、意大利语、西班牙语、德语和日语。

代码

#
# https://help.aliyun.com/zh/model-studio/user-guide/audio-language-model?spm=a2c4g.11186623.help-menu-2400256.d_1_0_3.68cb695bPKCWAZ&scm=20140722.H_2845960._.OR_help-T_cn~zh-V_1#a78bd7546c4v4
# 支持语音对话
# 支持流式输出文本
# 支持音频理解
# 支持多轮对话import os
import dashscope
from dashscope import MultiModalConversationprint('\r\Voice Conversation with nincremental_output Demo')
messages = [{"role": "user","content": [{"audio": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20240916/kvkadk/%E6%8E%A8%E8%8D%90%E4%B9%A6.wav"}#对话,对应的文本“我想读一些文学类的书,有推荐吗”]}
]response = dashscope.MultiModalConversation.call(#api_key=os.getenv("DASHSCOPE_API_KEY"),model='qwen-audio-turbo-latest', messages=messages,stream=True,incremental_output=True,result_format="message")print(response)for chunk in response:print(chunk)print('\r\nMultiModalConversation Demo')
messages = [{"role": "user","content": [{"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/audios/welcome.mp3"},#文件对应的文本‘欢迎使用阿里云’{"text": "这段音频在说什么?"},]}
]response = MultiModalConversation.call(model='qwen-audio-turbo-latest', messages=messages)
print("第1次回复:", response) # 将模型回复到messages中,并添加新的用户消息
messages.append({'role': response.output.choices[0].message.role,'content': response.output.choices[0].message.content
})
messages.append({"role": "user","content": [{"text": "简单介绍这家公司。"}]
})response = MultiModalConversation.call(model='qwen-audio-turbo-latest', messages=messages)
print("第2次回复:", response)print('\r\nMultiModalConversation Demo')
# 请用您的本地音频的绝对路径替换 ABSOLUTE_PATH/welcome.mp3
audio_file_path = "guess_age_gender.wav"
messages = [{"role": "system", "content": [{"text": "You are a helpful assistant."}]},{"role": "user","content": [{"audio": audio_file_path}, {"text": "音频里在说什么?"}],}
]response = MultiModalConversation.call(model="qwen-audio-turbo-latest", messages=messages)
print(response)audio_file_path = "translate_to_chinese.wav"
messages = [{"role": "system", "content": [{"text": "You are a helpful assistant."}]},{"role": "user","content": [{"audio": audio_file_path}, {"text": "音频里在说什么?"}],}
]response = MultiModalConversation.call(model="qwen-audio-turbo-latest", messages=messages)
print(response)audio_file_path = "1272-128104-0000.flac"
messages = [{"role": "system", "content": [{"text": "You are a helpful assistant."}]},{"role": "user","content": [{"audio": audio_file_path}, {"text": "音频里在说什么?"}],}
]response = MultiModalConversation.call(model="qwen-audio-turbo-latest", messages=messages)
print(response)# 将模型回复到messages中,并添加新的用户消息
messages.append({'role': response.output.choices[0].message.role,'content': response.output.choices[0].message.content
})
messages.append({"role": "user","content": [{"text": "翻译成中文。"}]
})
response = MultiModalConversation.call(model='qwen-audio-turbo-latest', messages=messages)
print("第2次回复:", response)

其它

Qwen-Audio的ASR专用优化版本

通义千问ASR基于Qwen-Audio训练的专用于语音识别的模型,支持中英文识别。目前为Beta版本。

通义千问Audio模型按输入和输出的总Token数进行计费。

音频转换为Token的规则:每一秒钟的音频对应25个Token。若音频时长不足1秒,则按25个Token计算。

虽然通义千问ASR基于Qwen-Audio进行训练,但它不支持多轮对话和自定义的System Prompt及User Prompt。

语音识别_大模型服务平台百炼(Model Studio)-阿里云帮助中心

相关文章:

Qwen2-Audio系列学习笔记

模型介绍 GitHub - QwenLM/Qwen2-Audio: The official repo of Qwen2-Audio chat & pretrained large audio language model proposed by Alibaba Cloud. https://arxiv.org/pdf/2407.10759 https://zhuanlan.zhihu.com/p/712987238 We introduce the latest progress o…...

高频 SQL 50 题(基础版)_1341. 电影评分

高频 SQL 50 题&#xff08;基础版&#xff09;_1341. 电影评分 思路 思路 (select Users.name results from Users left join MovieRating on Users.user_id MovieRating.user_id group by(Users.name) order by count(MovieRating.movie_id) desc,Users.name asc limit 1) u…...

C#批量压缩并上载CSV数据文件到Box企业云盘

C# .NET 8实现Windows下批量压缩csv文件为zip文件&#xff0c;然后异步上传到box企业云服务网盘路径&#xff0c;实现异常处理和写入运行状态日志&#xff0c;参数来自ini配置文件。 C# .NET 8代码示例&#xff0c;包含INI配置读取、CSV文件压缩、Box上传、异步处理和日志记录…...

pyside6学习专栏(九):在PySide6中使用PySide6.QtCharts绘制6种不同的图表的示例代码

PySide6的QtCharts类支持绘制各种型状的图表&#xff0c;如面积区域图、饼状图、折线图、直方图、线条曲线图、离散点图等&#xff0c;下面的代码是采用示例数据绘制这6种图表的示例代码,并可实现动画显示效果&#xff0c;实际使用时参照代码中示例数据的格式将实际数据替换即可…...

阿里万相,正式开源

大家好&#xff0c;我是小悟。 阿里万相正式开源啦。这就像是AI界突然开启了一扇通往宝藏的大门&#xff0c;而且还是免费向所有人敞开的那种。 你想想看&#xff0c;在这个科技飞速发展的时代&#xff0c;AI就像是拥有神奇魔法的魔法师&#xff0c;不断地给我们带来各种意想…...

Golang语法特性总结

1.认识Golang代码特性 package main //1.包含main函数的文件就是一个main包--当前程序的包名// import "fmt" // import "time" import("fmt""time" )//3.同时包含多个包 4.强制代码风格:函数的 { 一定和函数名在同一行&#xff0c;否…...

AI绘画软件Stable Diffusion详解教程(6):文生图、提示词细说与绘图案例

文生图即以文字描述来生成图像&#xff0c;这是目前所有AI绘画软件的基本功能之一。要想画一副好的图片&#xff0c;除了选择好的模型&#xff0c;在文生图中&#xff0c;提示词特别关键。 一、什么是提示词&#xff08;Prompt&#xff09; 提示词又称创意、关键词、咒语、ca…...

getline的使用(L1-059敲笨钟)

在 C 中&#xff0c;getline 函数主要有两种常用的形式&#xff0c;分别是 <iostream> 头文件中的 std::getline 用于从输入流读取一行字符串&#xff0c;以及 <cstdio> 头文件中的 std::getline&#xff08;C11 引入&#xff09;用于从文件流读取一行。下面分别介…...

Python数据可视化

1.Python 数据可视化全指南 &#x1f680; 数据可视化是数据分析和机器学习的关键环节&#xff0c;Python 提供了丰富的可视化库&#xff0c;如 Matplotlib、Seaborn、Plotly、Pandas 内置可视化等。以下是 Python 可视化的核心内容及最佳实践。 2. 基础可视化库 2.1 Matplot…...

探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法

文章目录 2.4 CORDIC算法2.4.1 CORDIC算法的基本原理2.4.2 方法论与分类体系旋转模式矢量模式线性模式 2.4.3 **CORDIC 算法中的误差来源****角度逼近误差的分析****缩放效应误差的分析****精度需求与迭代次数的关系****常见应用场景下的迭代次数建议****总结** 2.4.4优缺点分析…...

golang介绍,特点,项目结构,基本变量类型与声明介绍(数组,切片,映射),控制流语句介绍(条件,循环,switch case)

目录 golang 介绍 面向并发 面向组合 特点 项目结构 图示 入口文件 main.go 基本变量类型与声明 介绍 声明变量 常量 字符串(string) 字符串格式化 空接口类型 数组 切片 创建对象 追加元素 复制切片 map(映射) 创建对象 使用 多重赋值 控制流语句…...

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型&#xff08;LLM&#xff09;本地化部署与管理工具&#xff0c;旨在简化在本地计算机上运行和管理大语言模型…...

力扣-动态规划-53 最大子数组和

思路 dp数组定义&#xff1a;以i为结尾的字符串的最大子数组和为dp[i]递推公式&#xff1a; dp[i] max(nums[i], dp[i-1] nums[i]);dp数组初始化&#xff1a;dp[0] nums[0];遍历顺序&#xff1a;顺序时间复杂度&#xff1a; 代码 class Solution { public:int maxS…...

论文阅读和代码实现EfficientDet(BiFPN)

BiFPN 采用双向特征融合&#xff0c;让 P3 和 P4 不仅能获取来自 Backbone 的信息&#xff0c;还可以有效吸收 P5 的高级语义特征&#xff0c;增强小目标的判别能力 通过 加权特征融合&#xff08;Weighted Feature Fusion&#xff09;&#xff0c;BiFPN 让 P3 层能够 自动调整…...

[杂学笔记] 封装、继承、多态,堆和栈的区别,堆和栈的区别 ,托管与非托管 ,c++的垃圾回收机制 , 实现一个单例模式 注意事项

文章目录 1.封装、继承、多态2. 堆和栈的区别3.指针和引用的区别4. 托管与非托管5. c的垃圾回收机制6. 实现一个单例模式 注意事项 1.封装、继承、多态 封装就是将数据和内部的方法封装到一个类中&#xff0c;对外隐藏内部实现细节&#xff0c;但是留下了公共接口提供给外部使…...

c++ std::bind、std::bind_front使用笔记

c std::bind、std::bind_front使用笔记 std::bind 和 std::bind_front 的使用说明std::bind (C11 引入)std::bind_front (C20 引入) 应用场景应用注意事项应用注意事项的例子 std::bind 和 std::bind_front 的使用说明 std::bind (C11 引入) std::bind 用于创建一个新的可调用…...

神策数据严正声明

近日&#xff0c;我们发现有不法分子冒充神策网络科技&#xff08;北京&#xff09;有限公司&#xff08;以下简称”神策数据”&#xff09;的名义&#xff0c;发布虚假的招聘广告、面试邀请&#xff0c;企图误导求职者并进行不法行为。对此&#xff0c;我司发布严正声明&#…...

vue+elementui 实现上传文件/导入文件的功能

vueelementui 实现上传文件/导入文件的功能 1. 上传组件 <el-form-item label"上传文件&#xff1a;"><el-uploadaction"":file-list"fileList":show-file-list"false":http-request"handUpLoad"drag:limit"…...

FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解)

文章目录 FastGPT 引申&#xff1a;知识库辅助开发&#xff08;代码符号自动提取与文件匹配工具详解&#xff09;1. 符号提取 prompt2. 文件查询 prompt3. 总结 FastGPT 引申&#xff1a;知识库辅助开发&#xff08;代码符号自动提取与文件匹配工具详解&#xff09; 在开发过程…...

李国杰院士 “七问” DeepSeek:深度剖析 AI 发展新态势

李国杰院士 “七问” DeepSeek&#xff1a;深度剖析 AI 发展新态势 在人工智能领域的探索之路上&#xff0c;李国杰院士凭借深厚的学术造诣和前瞻性的眼光&#xff0c;成为指引方向的重要灯塔。 李国杰院士任职于中国科学院计算技术研究所&#xff0c;担任研究员一职。他不仅是…...

C#中泛型的协变和逆变

协变&#xff1a; 在泛型接口中&#xff0c;使用out关键字可以声明协变。这意味着接口的泛型参数只能作为返回类型出现&#xff0c;而不能作为方法的参数类型。 示例&#xff1a;泛型接口中的协变 假设我们有一个基类Animal和一个派生类Dog&#xff1a; csharp复制 public…...

transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3

目录 前言 掩码张量 什么是掩码张量 掩码张量的作用 生成掩码张量实现 注意力机制 学习目标 注意力计算规则 注意力和自注意力 注意力机制 注意力机制计算规则的代码实现 多头注意力机制 学习目标 什么是多头注意力机制 多头注意力计算机制的作用 多头注意力机…...

SpringBoot生成唯一ID的方式

1.为什么要生成唯一ID&#xff1f; 数据唯一性&#xff1a;每个记录都需要有一个独一无二的标识符来确保数据的唯一性。这可以避免重复的数据行&#xff0c;并有助于准确地查询、更新或删除特定的记录。 数据完整性&#xff1a;通过使用唯一ID&#xff0c;可以保证数据库中的数…...

认识时钟树

时钟源 高速外部震荡器HSE 低速外部震荡器LSE 高速内部震荡器HSI 低速内部震荡器LSI 易混淆点&#xff1a; RC&#xff08;Resistor-Capacitor&#xff0c;电阻-电容振荡器&#xff09;一般是内部时钟源 RTC&#xff08;Real-Time Clock&#xff0c;实时时钟&#xff09;…...

NLP如何训练AI模型以理解知识

一、自然语言处理&#xff08;NLP&#xff09;的定义与核心目标 1. 什么是自然语言处理&#xff1f; NLP是计算机科学与人工智能的交叉领域&#xff0c;旨在让机器具备以下能力&#xff1a; • 理解&#xff1a;解析人类语言&#xff08;文本或语音&#xff09;的语法、语义和…...

linux如何在某个文件夹下查看所有文件(层级只到当前文件夹的两层)并找到‘XXXX’ 这个单词

问了AI写的不错&#xff0c;记录一下&#xff0c;排查一些报错的时候比较好用 在 Linux 中&#xff0c;您可以通过命令行工具查看某个文件夹下的所有文件&#xff08;限制到当前文件夹及其子文件夹两层深度&#xff09;&#xff0c;并搜索包含特定单词&#xff08;如 XXXXX&am…...

Android 常见View的防抖

在开发Android应用时&#xff0c;我们经常会遇到用户快速点击按钮或者频繁触发某个事件的情况。这种行为可能会导致不必要的重复操作&#xff0c;例如多次提交表单、重复加载数据等。为了避免这些问题&#xff0c;我们需要对这些事件进行防抖处理。本文将详细介绍如何在Kotlin中…...

Unity打包到webgl鼠标图标大小不正确

我使用了自定义鼠标纹理&#xff0c;打包出来发现鼠标特别的大&#xff0c;位置也不对劲 研究了一下&#xff0c;不考虑浏览器界面缩放的话&#xff0c;可以直接改import settings的最大尺寸&#xff0c;改成合适的尺寸。 暂时先这样解决吧 最后贴一个设置鼠标图标的代码 pub…...

CentOS 7中安装Dify

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等&#xff0c;让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时&#xff0c;会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…...

爬蟲動態IP代理與數據採集穩定性

對於從事爬蟲開發的人來說&#xff0c;IP代理的使用直接影響了爬蟲的效率和穩定性。爬蟲的本質是模擬用戶訪問網站&#xff0c;通過抓取網頁內容來獲取所需數據。但大多數網站為了保護自己的數據或防止濫用&#xff0c;會設置諸如IP訪問頻率限制、登錄驗證甚至封禁等反爬蟲措施…...

excel 斜向拆分单元格

右键-合并单元格 右键-设置单元格格式-边框 在设置好分割线后&#xff0c;你可以开始输入文字。 需要注意的是&#xff0c;文字并不会自动分成上下两行。 为了达到你期望的效果&#xff0c;你可以通过 同过左对齐、上对齐 空格键或使用【AltEnter】组合键来调整单元格中内容的…...

React Native 实现滑一点点内容区块指示器也滑一点点

效果图如上&#xff0c;内容滑一点点&#xff0c;指示器也按比例话一点点&#xff0c;列表宽度跟数据有关。 实现思路如下&#xff1a; 1.监听列表滑动事件&#xff0c;获取列表横向滑动距离&#xff0c;假设为A&#xff1b; 2.获取列表的宽度&#xff0c;及列表可滑动的宽度…...

解决Vscode项目同时运行两个项目终端无法自动叠加的问题

终端&#xff08;如命令行工具或服务进程&#xff09;无法自动“叠加”使用同一资源&#xff08;如端口号、进程ID等&#xff09;的核心原因在于操作系统的资源管理机制和网络协议规范的限制。以下是具体分析&#xff1a; 以下是解决 VSCode 同时运行两个项目时终端被前一个占…...

vuex中的state是响应式的吗?

在 Vue.js 中&#xff0c;Vuex 的 state 是响应式的。这意味着当你更改 state 中的数据时&#xff0c;依赖于这些数据的 Vue 组件会自动更新。这是通过 Vue 的响应式系统实现的&#xff0c;该系统使用了 ES6 的 Proxy 对象来监听数据的变化。 当你在 Vuex 中定义了一个 state …...

k8s面试题总结(九)

1.K8s中pod删除失败&#xff0c;有哪些情况&#xff1f;如何解决&#xff1f; Pod删除失败的情况&#xff1a; (1) Pod被其他资源&#xff08;如Deployment,ReplicaSet&#xff09;引用&#xff0c;无法删除pod 解决&#xff1a;先删除引用该pod的资源&#xff0c;再删除pod…...

【JQuery—前端快速入门】JQuery 操作元素

JQuery 操作元素 1. 获取/修改元素内容 三个简单的获取元素的方法&#xff1a; 这三个方法即可以获取元素的内容&#xff0c;又可以设置元素的内容. 有参数时&#xff0c;就进行元素的值设置&#xff0c;没有参数时&#xff0c;就进行元素内容的获取. 接下来&#xff0c;我们需…...

三维数据可视化与表面重建:Marching Cubes算法的原理与应用

1. 引言 随着现代医学影像技术的飞速发展&#xff0c;三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中&#xff0c;Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cu…...

网络变压器的主要电性参数与测试方法(2)

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;网络变压器的主要电性参数与测试方法&#xff08;2&#xff09;.. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法&#xff1a; 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…...

端到端自动驾驶——cnn网络搭建

论文参考&#xff1a;https://arxiv.org/abs/1604.07316 demo 今天主要来看一个如何通过图像直接到控制的自动驾驶端到端的项目&#xff0c;首先需要配置好我的仿真环境&#xff0c;下载软件udacity&#xff1a; https://d17h27t6h515a5.cloudfront.net/topher/2016/November…...

# 【Unity】【游戏开发】赛车游戏中碰撞加速的实现方法

背景 在赛车类游戏开发中,常常需要实现赛车在碰撞某些道具或对象后加速的功能。例如,当赛车经过加速带或碰撞加速道具时,速度会瞬间增加,使游戏更具动态性和可玩性。本文将介绍一种通用的实现方式,并分析其逻辑。 分析 加速的核心逻辑如下: 判断碰撞条件:检测赛车是否…...

Dubbo本地服务调试

本地服务之间调试 参考这个文档&#xff1a; Dubbo本地调试 注意事项 本地主服务调用本地另外一个子服务&#xff0c;dubbo端口号与子服务的WEB端口号不一致。要查看子服务dubbo的配置文件&#xff0c;设置的rpc端口号是多少主服务中&#xff0c;最好在dubbo的配置文件&…...

SqlSugar 语法糖推荐方式

//方式1&#xff1a;var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2&#xff1a;不推荐使用&#xff0c;建议优先使用 Lambda 表达式&#xff0c;因为它更…...

爬虫逆向实战小记——解决captcha滑动验证码

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; IGh0dHBzOi8vY2FwdGNoYS5ydWlqaWUuY29tLmNuLw 第一步: 分析请求网址和响应内容 (1)通过观察&#xff0c;滑…...

printf 与前置++、后置++、前置--、后置-- 的关系

# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里&#xff0c;编译器会先计算 a 和 --a 的值&#xff0c;然后再 从右向左 开始输出。 printf函数中&#xff0c;如果有多个…...

【Web前端开发】---HTML标签及标签属性

1、单标签与双标签 HTML标签分为&#xff1a;双标签、单标签。 例如&#xff1a; <marquee>你好</marquee> 示例&#xff1a; 双标签&#xff1a;<标签名>标签体</标签名> 单标签&#xff1a;<标签名/>&#xff08;注意&#xff1a;/可以省…...

【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析

DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...

【赵渝强老师】监控Redis

对运行状态的Redis实例进行监控是运维管理中非常重要的内容&#xff0c;包括&#xff1a;监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。 一、监控Redis的内存 视频讲解如下 【…...

RocketMQ顺序消费机制

RocketMQ的顺序消费机制通过生产端和消费端的协同设计实现&#xff0c;其核心在于局部顺序性&#xff0c;即保证同一队列&#xff08;MessageQueue&#xff09;内的消息严格按发送顺序消费。以下是详细机制解析及关键源码实现&#xff1a; 一、顺序消费的核心机制 1. 生产端路…...

新装的conda 以及pycharm未能正确初始化,或conda环境变量配置错误问题解决!!!

Windows PowerShell 版权所有&#xff08;C&#xff09; Microsoft Corporation。保留所有权利。 安装最新的 PowerShell&#xff0c;了解新功能和改进&#xff01;https://aka.ms/PSWindows PS E:\Dev_project\MyProjects> conda cativate py12 usage: conda-script.py [-h…...

通往 AI 之路:Python 机器学习入门-线性代数

2.1 线性代数&#xff08;机器学习的核心&#xff09; 线性代数是机器学习的基础之一&#xff0c;许多核心算法都依赖矩阵运算。本章将介绍线性代数中的基本概念&#xff0c;包括标量、向量、矩阵、矩阵运算、特征值与特征向量&#xff0c;以及奇异值分解&#xff08;SVD&…...