import torch
from collections import OrderedDict
from pyvene import (
ConstantSourceIntervention,
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention,
)
from transformers.activations import ACT2FN
class LowRankRotateLayer(torch.nn.Module):
"""A linear transformation with orthogonal initialization."""
def __init__(self, n, m, init_orth=True):
super().__init__()
# n > m
self.weight = torch.nn.Parameter(torch.empty(n, m), requires_grad=True)
if init_orth:
torch.nn.init.orthogonal_(self.weight)
def forward(self, x):
return torch.matmul(x.to(self.weight.dtype), self.weight)
class LoreftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
LoReFT(h) = h + R^T(Wh + b − Rh)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
rotate_layer = LowRankRotateLayer(self.embed_dim, kwargs["low_rank_dimension"], init_orth=True)
self.rotate_layer = torch.nn.utils.parametrizations.orthogonal(rotate_layer, orthogonal_map='householder')
self.learned_source = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.dropout = torch.nn.Dropout(kwargs["dropout"] if "dropout" in kwargs else 0.0)
self.act_fn = ACT2FN["linear"] if "act_fn" not in kwargs or kwargs["act_fn"] is None else ACT2FN[kwargs["act_fn"]]
def forward(
self, base, source=None, subspaces=None
):
rotated_base = self.rotate_layer(base)
output = base + torch.matmul(
(self.act_fn(self.learned_source(base)) - rotated_base), self.rotate_layer.weight.T
)
return self.dropout(output.to(base.dtype))
def state_dict(self, *args, **kwargs):
"""
Overwrite for data-efficiency.
"""
state_dict = OrderedDict()
for k, v in self.learned_source.state_dict().items():
state_dict[k] = v
state_dict["rotate_layer"] = self.rotate_layer.weight.data
return state_dict
def load_state_dict(self, state_dict, *args, **kwargs):
"""
Overwrite for data-efficiency.
"""
self.learned_source.load_state_dict(state_dict, strict=False)
overload_w = state_dict["rotate_layer"]
overload_w_width = overload_w.shape[-1]
self.rotate_layer.parametrizations.weight[0].base[:,:overload_w_width] = overload_w
return
class NoreftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
NoReFT(h) = h + W2^T(W1h + b − W2h)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
self.proj_layer = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"], bias=kwargs["add_bias"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.learned_source = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.dropout = torch.nn.Dropout(kwargs["dropout"] if "dropout" in kwargs else 0.0)
self.act_fn = ACT2FN["linear"] if "act_fn" not in kwargs or kwargs["act_fn"] is None else ACT2FN[kwargs["act_fn"]]
def forward(
self, base, source=None, subspaces=None
):
proj_base = self.proj_layer(base)
output = base + torch.matmul(
(self.act_fn(self.learned_source(base)) - proj_base), self.proj_layer.weight
)
return self.dropout(output.to(base.dtype))
class ConsreftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
ConsReFT(h) = h + R^T(b − Rh)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
rotate_layer = LowRankRotateLayer(self.embed_dim, kwargs["low_rank_dimension"], init_orth=True)
self.rotate_layer = torch.nn.utils.parametrizations.orthogonal(rotate_layer, orthogonal_map='householder')
self.learned_source = torch.nn.Parameter(
torch.rand(kwargs["low_rank_dimension"]), requires_grad=True)
def forward(
self, base, source=None, subspaces=None
):
rotated_base = self.rotate_layer(base)
output = base + torch.matmul(
(self.learned_source - rotated_base), self.rotate_layer.weight.T
)
return output.to(base.dtype)
class LobireftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
LobiReFT(h) = h + R^T(b)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
rotate_layer = LowRankRotateLayer(self.embed_dim, kwargs["low_rank_dimension"], init_orth=True)
self.rotate_layer = torch.nn.utils.parametrizations.orthogonal(rotate_layer, orthogonal_map='householder')
self.learned_source = torch.nn.Parameter(
torch.rand(kwargs["low_rank_dimension"]), requires_grad=True)
self.dropout = torch.nn.Dropout(kwargs["dropout"] if "dropout" in kwargs else 0.0)
def forward(
self, base, source=None, subspaces=None
):
output = base + torch.matmul(
self.learned_source, self.rotate_layer.weight.T
)
return self.dropout(output.to(base.dtype))
class DireftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
DiReFT(h) = h + R^T(Wh + b)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
rotate_layer = LowRankRotateLayer(self.embed_dim, kwargs["low_rank_dimension"], init_orth=True)
self.rotate_layer = torch.nn.utils.parametrizations.orthogonal(rotate_layer, orthogonal_map='householder')
self.learned_source = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.dropout = torch.nn.Dropout(kwargs["dropout"] if "dropout" in kwargs else 0.0)
self.act_fn = ACT2FN["linear"] if "act_fn" not in kwargs or kwargs["act_fn"] is None else ACT2FN[kwargs["act_fn"]]
def forward(
self, base, source=None, subspaces=None
):
cast_base = base.to(self.learned_source.weight.dtype)
output = base + torch.matmul(
(self.act_fn(self.learned_source(cast_base))).to(self.rotate_layer.weight.dtype), self.rotate_layer.weight.T
)
return self.dropout(output.to(base.dtype))
class NodireftIntervention(
SourcelessIntervention,
TrainableIntervention,
DistributedRepresentationIntervention
):
"""
NodiReFT(h) = h + W2^T(W1h + b)
"""
def __init__(self, **kwargs):
super().__init__(**kwargs, keep_last_dim=True)
self.proj_layer = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"], bias=kwargs["add_bias"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.learned_source = torch.nn.Linear(
self.embed_dim, kwargs["low_rank_dimension"]).to(
kwargs["dtype"] if "dtype" in kwargs else torch.bfloat16)
self.dropout = torch.nn.Dropout(kwargs["dropout"] if "dropout" in kwargs else 0.0)
self.act_fn = ACT2FN["linear"] if "act_fn" not in kwargs or kwargs["act_fn"] is None else ACT2FN[kwargs["act_fn"]]
def forward(
self, base, source=None, subspaces=None
):
output = base + torch.matmul(
self.act_fn(self.learned_source(base)), self.proj_layer.weight
)
return self.dropout(output.to(base.dtype))
这段代码定义了一系列基于PyTorch框架的神经网络干预层(Intervention Layers),用于对嵌入向量进行变换 :
torch
:PyTorch库,用于构建和操作张量以及构建神经网络。OrderedDict
:有序字典,用于保存状态字典时保持键的顺序。pyvene
:提供了不同类型的干预层基类。ACT2FN
:一个映射,将激活函数的名称映射到其对应的函数实现。LowRankRotateLayer
类__init__
:构造函数,接受输入维度n
和输出维度m
(要求n > m
),并可选择是否进行正交初始化。forward
:前向传播函数,使用矩阵乘法对输入x
进行变换。LoreftIntervention
类SourcelessIntervention
、TrainableIntervention
和DistributedRepresentationIntervention
,实现了LoReFT干预层。
__init__
:构造函数,初始化一个低秩旋转层、一个可学习的源向量层、dropout层和激活函数。forward
:实现了LoReFT变换,通过旋转层和可学习的源向量层对基础嵌入base
进行变换。state_dict
和load_state_dict
:重写这两个方法以优化数据效率,确保在保存和加载模型状态时只保存必要的参数。NoreftIntervention
类LoreftIntervention
,但使用的是正交投影层而不是旋转层,实现了NoReFT干预层。ConsreftIntervention
类LobirefIntervention
类DireftIntervention
类LoreftIntervention
,但源向量是通过线性层得到的,并且使用了激活函数,实现DiReFT 干预层。NodireftIntervention
类NoreftIntervention
,但源向量是通过线性层得到的,并且使用了激活函数,实现NodiReFT 干预层。模块一:Generative AI 原理本质、技术内核及工程实践周期详解
模块二:工业级 Prompting 技术内幕及端到端的基于LLM 的会议助理实战
模块三:三大 Llama 2 模型详解及实战构建安全可靠的智能对话系统
模块四:生产环境下 GenAI/LLMs 的五大核心问题及构建健壮的应用实战
模块五:大模型应用开发技术:Agentic-based 应用技术及案例实战
模块六:LLM 大模型微调及模型 Quantization 技术及案例实战
模块七:大模型高效微调 PEFT 算法、技术、流程及代码实战进阶
模块八:LLM 模型对齐技术、流程及进行文本Toxicity 分析实战
模块九:构建安全的 GenAI/LLMs 核心技术Red Teaming 解密实战
模块十:构建可信赖的企业私有安全大模型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通往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进行内容生成,及其对模型生成质量与多样性的影响。
GPT 自回归语言模型架构、数学原理及内幕-简介
基于 Transformer 的 Rasa Internals 解密之 Retrieval Model 剖析-简介
Transformer语言模型架构、数学原理及内幕机制-简介
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务