大模型微调之 在亚马逊AWS上实战LlaMA案例(八)

大模型微调之 在亚马逊AWS上实战LlaMA案例(八)

微调技术

Llama 等语言模型的大小超过 10 GB 甚至 100 GB。微调如此大的模型需要具有非常高的 CUDA 内存的实例。此外,由于模型的大小,训练这些模型可能会非常慢。因此,为了高效微调,我们使用以下优化:

  • 低秩适应 (LoRA) – 这是一种参数高效微调 (PEFT),用于对大型模型进行高效微调。在此,我们冻结整个模型,只在模型中添加一小组可调整的参数或层。例如,我们可以微调不到 1% 的参数,而不是为 Llama 2 7B 训练所有 70 亿个参数。这有助于显着减少内存需求,因为我们只需要存储 1% 参数的梯度、优化器状态和其他训练相关信息。此外,这有助于减少培训时间和成本。有关此方法的更多详细信息,请参阅LoRA:大型语言模型的低秩适应。
    在这里插入图片描述
    在这里插入图片描述

  • Int8 量化– 即使采用 LoRA 等优化,Llama 70B 等模型仍然太大而无法训练。为了减少训练期间的内存占用,我们可以在训练期间使用 Int8 量化。量化通常会降低浮点数据类型的精度。尽管这减少了存储模型权重所需的内存,但由于信息丢失而降低了性能。 Int8 量化仅使用四分之一精度,但不会导致性能下降,因为它不会简单地丢弃位。它将数据从一种类型舍入为另一种类型。要了解 Int8 量化,请参阅LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale。
    在这里插入图片描述

  • 完全分片数据并行 (FSDP) – 这是一种数据并行训练算法,可跨数据并行工作器分片模型参数,并且可以选择将部分训练计算卸载到 CPU。尽管参数分布在不同的 GPU 上,但每个微批次的计算都是 GPU 工作线程本地的。它更均匀地对参数进行分片,并通过训练期间的通信和计算重叠来实现优化的性能

下表对三种 Llama 2 模型的不同方法进行了比较。

在这里插入图片描述

Llama 模型的微调基于以下GitHub 存储库提供的脚本实现。
https://github.com/meta-llama/llama-recipes/tree/main

代码阅读

定义了两个用于文本安全检查的类,AuditNLGSensitiveTopicsSalesforceSafetyChecker。下面是对每一行代码的注释:

# 版权声明,表明这段代码属于 Meta Platforms, Inc. 和其关联公司。
# 根据 Llama 2 社区许可协议的条款,可以对这段软件进行使用和分发。import os  # 导入操作系统接口模块
import torch  # 导入 PyTorch 机器学习库
import warnings  # 导入警告模块,用于发出警告信息
from typing import List  # 导入类型提示模块中的 List 类型
from string import Template  # 导入字符串模块中的模板类
from enum import Enum  # 导入枚举模块中的 Enum 类型class AgentType(Enum):AGENT = "Agent"USER = "User"  # 定义一个枚举类 AgentType,包含两种类型:AGENT 和 USER# 定义一个用于使用 AuditNLG 库进行安全检查的类
class AuditNLGSensitiveTopics(object):def __init__(self):pass  # 初始化方法,目前为空def __call__(self, output_text, **kwargs):# 定义一个可调用的魔术方法,用于检查文本是否包含敏感话题try:from auditnlg.safety.exam import safety_scores  # 尝试导入 safety_scores 模块except ImportError as e:# 如果导入失败,打印错误信息并重新抛出异常print("Could not import optional dependency: auditnlg\nPlease install manually with:\n pip install auditnlg\nFollowed by:\npip install -r requirements.txt")raise edata = [{"output": output_text}]  # 创建一个包含待检查文本的字典列表result = safety_scores(data=data, method="sensitive_topics")  # 调用 safety_scores 方法进行安全评分scores = result[1]["all_scores"][0]  # 获取评分结果is_safe = scores["pred_class"] == "none"  # 判断文本是否安全report = ""  # 初始化报告字符串if not is_safe:# 如果文本不安全,生成一个包含预测类别和各个类别分数的报告report += f"Predicted class: {scores['pred_class']}\n"report += "|" + "|".join(f"{n:^10}" for n in [list(k.keys())[0] for k in scores["class_scores"]]) + "|\n"report += "|" + "|".join(f"{n:^10.5}" for n in [list(k.values())[0] for k in scores["class_scores"]]) + "|\n"return "Sensitive Topics", is_safe, report  # 返回检查结果和报告# 定义一个用于使用 Salesforce 安全检查模型的类
class SalesforceSafetyChecker(object):def __init__(self):pass  # 初始化方法,目前为空def __call__(self, output_text, **kwargs):# 定义一个可调用的魔术方法,用于检查文本是否安全from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, AutoConfig  # 导入所需的模块config = AutoConfig.from_pretrained("Salesforce/safety-flan-t5-base")  # 加载模型配置tokenizer = AutoTokenizer.from_pretrained("Salesforce/safety-flan-t5-base")  # 加载分词器model = AutoModelForSeq2SeqLM.from_pretrained("Salesforce/safety-flan-t5-base", config=config)  # 加载模型model.eval()  # 设置模型为评估模式prefix = "Is the <Text> field safe or unsafe?"  # 定义输入文本的前缀input_ids = tokenizer(prefix + " <Text> " + output_text + " <Context> ", return_tensors="pt").input_ids  # 分词并获取输入 IDif len(input_ids[0]) > 512:# 如果输入长度超过 512 个 token,发出警告warnings.warn("Input length is > 512 token. Safety check result could be incorrect.")with torch.no_grad():# 不计算梯度的情况下生成模型输出outputs = model.generate(input_ids,output_scores=True,return_dict_in_generate=True,max_new_tokens=20,)is_safe = tokenizer.decode(outputs.sequences[0], skip_special_tokens=True).split(" ")[0] == "safe"  # 判断文本是否安全report = ""  # 初始化报告字符串if not is_safe:# 如果文本不安全,生成一个包含各个安全维度分数的报告true_false_ids = tokenizer("true false").input_ids[:2]keys = ["toxicity", "hate", "identity", "violence", "physical", "sexual", "profanity", "biased"]scores = {}for k, i in zip(keys, range(3,20,2)):scores[k] = round(outputs.scores[i][0,true_false_ids].softmax(dim=0)[0].item(), 5)report += "|" + "|".join(f"{n:^10}" for n in scores.keys()) + "|\n"report += "|" + "|".join(f"{n:^10}" for n in scores.values()) + "|\n"return "Salesforce Content Safety Flan T5 Base", is_safe, report  # 返回检查结果和报告def get_total_length(self, data):# 定义一个方法,用于获取输入数据的总长度prefix = "Is the <Text> field safe or unsafe "input_sample = "<Text> {output} <Context> ".format(**data[0])return len(self.tokenizer(prefix + input_sample)["input_ids"])

这段代码的主要功能是使用特定的库和模型来检查文本是否包含不安全的内容,如敏感话题、有害内容等。AuditNLGSensitiveTopics 类使用 auditnlg 库进行敏感话题的检查,而 SalesforceSafetyChecker 类使用 Salesforce 提供的 safety-flan-t5-base 模型进行文本安全检查。两个类都实现了 __call__ 方法,使其实例可以像函数一样被调用,以执行安全检查。此外,SalesforceSafetyChecker 类还提供了一个 get_total_length 方法,用于获取输入数据的总长度。

  • 代码定义了几个类和函数,用于实现文本内容的安全性检查。以下是对每一行代码的注释:
# 定义一个使用Azure内容安全服务进行安全检查的类
class AzureSaftyChecker(object):# 类的初始化方法def __init__(self):try:# 尝试导入所需的Azure内容安全服务的工具from azure.ai.contentsafety import ContentSafetyClientfrom azure.core.credentials import AzureKeyCredential# 从环境变量中获取密钥和端点key = os.environ["CONTENT_SAFETY_KEY"]endpoint = os.environ["CONTENT_SAFETY_ENDPOINT"]except ImportError:# 如果无法导入所需的工具,抛出异常raise Exception("Could not import required package azure-ai-contentsafety. Install with: pip install azure-ai-contentsafety")except KeyError:# 如果环境变量未设置,抛出异常raise Exception("Environment variables not set. Please set CONTENT_SAFETY_KEY and CONTENT_SAFETY_ENDPOINT.")# 初始化Azure内容安全服务的客户端self.client = ContentSafetyClient(endpoint, AzureKeyCredential(key))# 定义一个方法,用于调用时执行安全检查def __call__(self, output_text, **kwargs):from azure.core.exceptions import HttpResponseErrorfrom azure.ai.contentsafety.models import AnalyzeTextOptions, TextCategory# 打印输出文本的长度print(len(output_text))# 如果输出文本过长(超过1000个字符),抛出异常if len(output_text) > 1000:raise Exception("Input length to safety check is too long (>1000).")# 定义要检查的文本类别categories = [TextCategory.VIOLENCE,TextCategory.SELF_HARM,TextCategory.SEXUAL,TextCategory.HATE,]# 创建请求对象request = AnalyzeTextOptions(text=output_text, categories=categories)try:# 调用Azure内容安全服务的analyze_text方法进行文本分析response = self.client.analyze_text(request)except HttpResponseError as e:# 如果发生HTTP响应错误,打印错误信息并抛出异常print("Analyze text failed.")if e.error:print(f"Error code: {e.error.code}")print(f"Error message: {e.error.message}")raiseprint(e)raise e# 定义不同严重性等级的文本描述levels = {0: "Safe", 2: "Low", 4: "Medium", 6: "High"}# 获取每个类别的严重性等级severities = [getattr(response, c.name.lower() + "_result").severity for c in categories]# 定义默认的安全等级DEFAULT_LEVELS = [0, 0, 0, 0]# 检查文本是否安全is_safe = all([s <= l for s, l in zip(severities, DEFAULT_LEVELS)])# 构建安全检查报告report = ""if not is_safe:report = "|" + "|".join(f"{c.name:^10}" for c in categories) + "|\n"report += "|" + "|".join(f"{levels[s]:^10}" for s in severities) + "|\n"# 返回安全检查的结果和报告return "Azure Content Saftey API", is_safe, report# 定义另一个安全检查类LlamaGuardSafetyChecker,使用LlamaGuard模型进行安全检查
class LlamaGuardSafetyChecker(object):# 类的初始化方法def __init__(self):from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfigfrom llama_recipes.inference.prompt_format_utils import build_default_prompt, create_conversation, LlamaGuardVersion# 使用的模型IDmodel_id = "meta-llama/LlamaGuard-7b"# 量化配置quantization_config = BitsAndBytesConfig(load_in_8bit=True)# 初始化分词器和模型self.tokenizer = AutoTokenizer.from_pretrained(model_id)self.model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=quantization_config, device_map="auto")# 定义一个方法,用于调用时执行安全检查def __call__(self, output_text, **kwargs):# 获取可选参数agent_type和user_promptagent_type = kwargs.get('agent_type', AgentType.USER)user_prompt = kwargs.get('user_prompt', "")# 准备模型的输入提示model_prompt = output_text.strip()if(agent_type == AgentType.AGENT):# 如果是代理类型,处理user_prompt和model_promptif user_prompt == "":print("empty user prompt for agent check, returning unsafe")return "Llama Guard", False, "Missing user_prompt from Agent response check"else:model_prompt = model_prompt.replace(user_prompt, "")user_prompt = f"User: {user_prompt}"agent_prompt = f"Agent: {model_prompt}"chat = [{"role": "user", "content": user_prompt},{"role": "assistant", "content": agent_prompt},]else:# 如果不是代理类型,构建用户聊天对象chat = [{"role": "user", "content": model_prompt},]# 使用分词器将聊天内容转换为输入IDinput_ids = self.tokenizer.apply_chat_template(chat, return_tensors="pt").to("cuda")# 获取输入ID的长度prompt_len = input_ids.shape[-1]# 使用模型生成文本output = self.model.generate(input_ids=input_ids, max_new_tokens=100, pad_token_id=0)# 解码生成的文本result = self.tokenizer.decode(output[0][prompt_len:], skip_special_tokens=True)# 获取生成文本的第一行splitted_result = result.split("\n")[0]# 检查生成的文本是否为"safe"is_safe = splitted_result == "safe"# 构建安全检查报告report = result# 返回安全检查的结果和报告return "Llama Guard", is_safe, report# 定义一个函数,根据提供的选项确定使用哪种安全检查器
def get_safety_checker(enable_azure_content_safety,enable_sensitive_topics,enable_salesforce_content_safety,enable_llamaguard_content_safety):# 初始化安全检查器列表safety_checker = []# 如果启用了Azure内容安全检查,添加AzureSaftyChecker实例到列表if enable_azure_content_safety:safety_checker.append(AzureSaftyChecker())# 如果启用了敏感话题检查,添加AuditNLGSensitiveTopics实例到列表(该类在代码中未定义)if enable_sensitive_topics:safety_checker.append(AuditNLGSensitiveTopics())# 如果启用了Salesforce内容安全检查,添加SalesforceSafetyChecker实例到列表(该类在代码中未定义)if enable_salesforce_content_safety:safety_checker.append(SalesforceSafetyChecker())# 如果启用了LlamaGuard内容安全检查,添加LlamaGuardSafetyChecker实例到列表if enable_llamaguard_content_safety:safety_checker.append(LlamaGuardSafetyChecker())# 返回安全检查器列表return safety_checker

实践

在大模型微调之 在亚马逊AWS上实战LlaMA案例(七)系列博客中,通过微调一个 LLaMA 2 模型。
通过摘要任务中的示例演示了对 Dolly 数据集的子集的微调。以下是示例输入,其中包含微调和非微调的响应以及地面实况响应:

输入模型:

Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\nWhen did Felix Luna die?\n\n### Input:\nFélix César Luna (30 September 1925 – 5 November 2009) was an Argentine writer, lyricist and historian.\n\n\n\n### Response:\n

实际的标签响应:

Felix Luna died on November 5th, 2009

非微调模型的响应:

Félix César Luna (30 September 19255 November 2009) was an Argentine\n\nWhen did Luna die?\n\n\n### Explanation:\nWe answer the question with the input's date of birth and the date of death.\n\n\n### Solution: 1102\n

微调模型的响应:

Félix Luna died on November 5th, 2009.\n\n

大模型技术分享

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

《企业级生成式人工智能LLM大模型技术、算法及案例实战》线上高级研修讲座

模块一:Generative AI 原理本质、技术内核及工程实践周期详解
模块二:工业级 Prompting 技术内幕及端到端的基于LLM 的会议助理实战
模块三:三大 Llama 2 模型详解及实战构建安全可靠的智能对话系统
模块四:生产环境下 GenAI/LLMs 的五大核心问题及构建健壮的应用实战
模块五:大模型应用开发技术:Agentic-based 应用技术及案例实战
模块六:LLM 大模型微调及模型 Quantization 技术及案例实战
模块七:大模型高效微调 PEFT 算法、技术、流程及代码实战进阶
模块八:LLM 模型对齐技术、流程及进行文本Toxicity 分析实战
模块九:构建安全的 GenAI/LLMs 核心技术Red Teaming 解密实战
模块十:构建可信赖的企业私有安全大模型Responsible AI 实战 

Llama3关键技术深度解析与构建Responsible AI、算法及开发落地实战

1、Llama开源模型家族大模型技术、工具和多模态详解:学员将深入了解Meta Llama 3的创新之处,比如其在语言模型技术上的突破,并学习到如何在Llama 3中构建trust and safety AI。他们将详细了解Llama 3的五大技术分支及工具,以及如何在AWS上实战Llama指令微调的案例。
2、解密Llama 3 Foundation Model模型结构特色技术及代码实现:深入了解Llama 3中的各种技术,比如Tiktokenizer、KV Cache、Grouped Multi-Query Attention等。通过项目二逐行剖析Llama 3的源码,加深对技术的理解。
3、解密Llama 3 Foundation Model模型结构核心技术及代码实现:SwiGLU Activation Function、FeedForward Block、Encoder Block等。通过项目三学习Llama 3的推理及Inferencing代码,加强对技术的实践理解。
4、基于LangGraph on Llama 3构建Responsible AI实战体验:通过项目四在Llama 3上实战基于LangGraph的Responsible AI项目。他们将了解到LangGraph的三大核心组件、运行机制和流程步骤,从而加强对Responsible AI的实践能力。
5、Llama模型家族构建技术构建安全可信赖企业级AI应用内幕详解:深入了解构建安全可靠的企业级AI应用所需的关键技术,比如Code Llama、Llama Guard等。项目五实战构建安全可靠的对话智能项目升级版,加强对安全性的实践理解。
6、Llama模型家族Fine-tuning技术与算法实战:学员将学习Fine-tuning技术与算法,比如Supervised Fine-Tuning(SFT)、Reward Model技术、PPO算法、DPO算法等。项目六动手实现PPO及DPO算法,加强对算法的理解和应用能力。
7、Llama模型家族基于AI反馈的强化学习技术解密:深入学习Llama模型家族基于AI反馈的强化学习技术,比如RLAIF和RLHF。项目七实战基于RLAIF的Constitutional AI。
8、Llama 3中的DPO原理、算法、组件及具体实现及算法进阶:学习Llama 3中结合使用PPO和DPO算法,剖析DPO的原理和工作机制,详细解析DPO中的关键算法组件,并通过综合项目八从零开始动手实现和测试DPO算法,同时课程将解密DPO进阶技术Iterative DPO及IPO算法。
9、Llama模型家族Safety设计与实现:在这个模块中,学员将学习Llama模型家族的Safety设计与实现,比如Safety in Pretraining、Safety Fine-Tuning等。构建安全可靠的GenAI/LLMs项目开发。
10、Llama 3构建可信赖的企业私有安全大模型Responsible AI系统:构建可信赖的企业私有安全大模型Responsible AI系统,掌握Llama 3的Constitutional AI、Red Teaming。

解码Sora架构、技术及应用

一、为何Sora通往AGI道路的里程碑?
1,探索从大规模语言模型(LLM)到大规模视觉模型(LVM)的关键转变,揭示其在实现通用人工智能(AGI)中的作用。
2,展示Visual Data和Text Data结合的成功案例,解析Sora在此过程中扮演的关键角色。
3,详细介绍Sora如何依据文本指令生成具有三维一致性(3D consistency)的视频内容。 4,解析Sora如何根据图像或视频生成高保真内容的技术路径。
5,探讨Sora在不同应用场景中的实践价值及其面临的挑战和局限性。

二、解码Sora架构原理
1,DiT (Diffusion Transformer)架构详解
2,DiT是如何帮助Sora实现Consistent、Realistic、Imaginative视频内容的?
3,探讨为何选用Transformer作为Diffusion的核心网络,而非技术如U-Net。
4,DiT的Patchification原理及流程,揭示其在处理视频和图像数据中的重要性。
5,Conditional Diffusion过程详解,及其在内容生成过程中的作用。
三、解码Sora关键技术解密
1,Sora如何利用Transformer和Diffusion技术理解物体间的互动,及其对模拟复杂互动场景的重要性。
2,为何说Space-time patches是Sora技术的核心,及其对视频生成能力的提升作用。
3,Spacetime latent patches详解,探讨其在视频压缩和生成中的关键角色。
4,Sora Simulator如何利用Space-time patches构建digital和physical世界,及其对模拟真实世界变化的能力。
5,Sora如何实现faithfully按照用户输入文本而生成内容,探讨背后的技术与创新。
6,Sora为何依据abstract concept而不是依据具体的pixels进行内容生成,及其对模型生成质量与多样性的影响。

在这里插入图片描述

举办《Llama3关键技术深度解析与构建Responsible AI、算法及开发落地实战》线上高级研修讲座

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

HBase 读写流程

HBase 读写流程 1. 读流程 Client先访问zookeeper&#xff0c;从zookeeper获取meta region的位置从meta region中读取meta表中的数据&#xff0c;meta中存储了用户表的region信息&#xff1b;根据namespace、表名和rowkey在meta表中找到对应的region信息&#xff1b;找到这个r…

以C++为核心语言的高频交易系统是如何做到低延迟的?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 c的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 问题中限定语言是C&#xff0c;可…

暗区突围PC测试资格 暗区突围PC端测试资格获取教程

《暗区突围》的横空出世&#xff0c;犹如一颗震撼弹投入了游戏圈&#xff0c;它不仅颠覆了传统射击游戏的框架&#xff0c;更以独特的撤离生存机制和深度的装备打造系统&#xff0c;激发了无数玩家的探险欲和竞技精神。在这个由精密设计的地图和复杂多变的战术构成的虚拟舞台中…

基于Springboot+Vue的Java项目-旅游网站系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

464. 我能赢吗

464. 我能赢吗 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_464我能赢吗_记忆化dp 错误经验吸取 原题链接&#xff1a; 464. 我能赢吗 https://leetcode.cn/problems/can-i-win/description/ 完成情况&#xff1a; 解题思路&#x…

C#知识|将选中的账号信息展示到控制台(小示例)

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 上篇学习了控件事件的统一关联&#xff0c; 本篇通过实例练习继续学习事件统一处理中Tag数据获取、对象的封装及泛型集合List的综合运用。 01 实现功能 在上篇的基础上实现&#xff0c;点击选中喜欢的账号&#xff0…

【数据结构】二叉树(Binary Tree)

文章目录 一、树的概念及结构二、二叉树的概念及结构1.二叉树的概念2.特殊的二叉树3.二叉树的性质 三、二叉树的存储顺序存储链式存储 四、二叉树的实现1.创建二叉树2.二叉树的遍历前序遍历中序遍历后序遍历层序遍历根据遍历顺序创建二叉树 3.二叉树的基本操作1.总结点个数2.二…

拼多多二面,原来是我对自动化测试的理解太浅了

如果你入职一家新的公司&#xff0c;领导让你开展自动化测试&#xff0c;作为一个新人&#xff0c;你肯定会手忙脚乱&#xff0c;你会如何落地自动化测试呢&#xff1f; 01 什么是自动化 有很多人做了很长时间的自动化但却连自动化的概念都不清楚&#xff0c;这样的人也是很悲…

静态分析-RIPS-源码解析记录-02

这部分主要分析scanner.php的逻辑&#xff0c;在token流重构完成后&#xff0c;此时ini_get是否包含auto_prepend_file或者auto_append_file 取出的文件路径将和tokens数组结合&#xff0c;每一个文件都为一个包含require文件名的token数组 接着回到main.php中&#xff0c;此时…

最少数量线段覆盖-华为OD

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 给定坐标轴上的一组线段&#xff0c;线段的起点和终点均为整数…

搜维尔科技:【案例分享】Xsens用于工业制造艺术创新设计平台

用户名称&#xff1a;北京理工大学 主要产品&#xff1a;Xsens MVN Awinda惯性动作捕捉系统 在设计与艺术学院的某实验室内&#xff0c;通过Xsens惯性动作捕捉&#xff0c;对人体动作进行捕捉&#xff0c;得到人体三维运动数据&#xff0c;将捕到的数据用于后续应用研究。…

挖了谷歌一个 XSS 漏洞,获奖三千美金

大家好&#xff0c;我是楷鹏。 程序员 Matan 挖到了一个 XSS 漏洞并报告给谷歌&#xff0c;奖励 3133.7 美金&#xff08;约合人民币 22666 元&#xff09; 这是谷歌 Bug Hunter 的奖励规则&#xff1a; &#x1f449; 图片来自 https://bughunters.google.com/about/rules/…

解锁网站SEO优势,百度站长工具助您一臂之力(百度站长平台还提供了哪些工具供seo人员使用?)

在当今数字化时代&#xff0c;网站已经成为企业宣传、产品销售、信息发布的主要渠道之一。有着再好的网站&#xff0c;如果在百度等搜索引擎中无法被用户搜索到&#xff0c;那就等于白搭。因此&#xff0c;网站的SEO优化显得尤为重要。而作为国内最大的搜索引擎&#xff0c;百度…

Web Component fancy-components

css-doodle 组件库 fancy-components 组件库使用 yarn add fancy-components使用&#xff1a; import { FcBubbles } from fancy-components new FcBubbles() //要用哪个就new哪个 new 这里可能会报错eslink,eslintrc.js中处理报错 module.exports {rules: {no-new: off} …

物联网SCI期刊,潜力新刊,审稿速度快,收稿范围广泛!

一、期刊名称 Internet of Things 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;物联网 影响因子&#xff1a;5.9 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$2310 三、期刊征稿范围 I…

网页转长图插件html2canvas【前端】

网页转长图插件html2canvas【前端】 前言版权开源推荐网页转长图插件html2canvas【前端】wkImageStorage流程使用后端application.propertiesWkConfigShareControllerImageCleanupTask 前端html2canvas.jsshare.htmlshare.jsgetShare.jsgetShare.html 最后 前言 2024-5-10 18:…

国内运营商选择爱立信,或因它的低频5G技术更先进,价格更便宜

国内某运营商将大笔5G设备订单交给爱立信&#xff0c;引发了掀然大波&#xff0c;影响仍在扩散&#xff0c;对此各方说什么原因都有&#xff0c;笔者认为爱立信此次斩获大单&#xff0c;可能在于它的低频5G设备更先进&#xff0c;价格更便宜&#xff0c;对于急于降低成本的国内…

2024高安全个人密码本程序源码,贴身密码管家-随机密码备忘录二代密码

项目概述&#xff1a; 在这个网络高度发展的时代&#xff0c;每个人都需要上网&#xff0c;而上网就不可避免地需要使用账号和密码。 在众多账号的情况下&#xff0c;你是否还在为复杂难记的密码感到烦恼&#xff1f;现在只需要记录一次&#xff0c; 就可以随时查看你的密码…

搭建一个vue3+vant4+vite4+pinia 的移动端h5模板

效果图 项目的创建和组件库的安装 项目创建 pnpm create vite vue3-vant4-vite-pinia-pro-h5注意&#xff1a; node版本控制在 18&#xff0c; 可以通过nvm来管理本地的node版本&#xff0c;具体可以看这篇文章 nvm的简单使用 vant-ui库的安装【这里安装的是 ^4.6.0 版本的】…

DDoS攻防,本质上是成本博弈!

在互联网里&#xff0c;分布式拒绝服务&#xff08;DDoS&#xff09;攻击作为一种常见的网络威胁&#xff0c;持续对网站、在线服务和企业基础设施构成严重挑战。本文旨在探讨实施DDoS攻击的大致成本、以及企业如何采取有效措施来防范此类攻击&#xff0c;确保业务连续性和网络…