首页 > 其他分享 >perf flash att

perf flash att

时间:2023-05-18 13:57:21浏览次数:47  
标签:torch ProfilerActivity perf seq flash profiler att cuda attention

import torch
import torch.nn.functional as F
import math


def fmha(q, k, v, is_causal=True):
    return F.scaled_dot_product_attention(q, k, v, attn_mask=None, dropout_p=0.0, is_causal=is_causal)

def mha(q, k, v, is_causal=True, seq_length=1024):
    # seq_length = q.shape[2]
    attention_scores = torch.matmul(q, k.transpose(-2, -1)) / q.shape[-1] # -> (b, nh, t, t)
    # attention_scores = attention_scores.masked_fill(self.bias[:,:,:seq_length,:seq_length] == 0, float('-inf'))
    attention_probs = F.softmax(attention_scores, dim=-1)
    # attention_probs = self.attention_dropout(attention_probs) # -> (b, nh, t, t)
    out = torch.matmul(attention_probs, v) # -> (b, nh, t, hs)
    return out

q = torch.randn(2,16,1024,64).cuda()
k = torch.randn(2,16,1024,64).cuda()
v = torch.randn(2,16,1024,64).cuda()

for i in range(2):
    with torch.profiler.profile(
        activities=[
            # torch.profiler.ProfilerActivity.CPU,
            torch.profiler.ProfilerActivity.CUDA,
        ]) as p:
        fmha(q, k, v)
    print(p.key_averages().table(
        sort_by="self_cuda_time_total", row_limit=-1))
print('--------')
for i in range(2):
    with torch.profiler.profile(
        activities=[
            # torch.profiler.ProfilerActivity.CPU,
            torch.profiler.ProfilerActivity.CUDA,
        ]) as p:
        mha(q, k, v)
    print(p.key_averages().table(
        sort_by="self_cuda_time_total", row_limit=-1))

标签:torch,ProfilerActivity,perf,seq,flash,profiler,att,cuda,attention
From: https://www.cnblogs.com/xytpai/p/17411689.html

相关文章

  • 如何正确使用表格组件的formatter属性
    fastadmin前端表格组件使用的是bootstrap-table,如果我们想要自定义表格的内容,可以使用formatter属性。最常规的用法如下:columns:[[{field:'type',title:__('type'),formatter:function(value,row){......
  • Self-attention
    1.问题提出全连接神经网络(FCN),可以很好的处理输入为1个向量(特征向量)的情况,但是如果输入是一组向量,FCN处理起来不太方便以词性标记的问题为例对于处于同一个句子中的相同的2个单词saw,词性不同,前者为动词(V),后者为名词(N)如果尝试使用FCN去解决这个问题,将每个单词转化为向量输入FCN,......
  • 水晶报表 加载报错 An error has occurred while attempting to load the Crystal Rep
    源错误:CrystalReportsAnerrorhasoccurredwhileattemptingtoloadtheCrystalReportsruntime.EithertheCrystalReportsregistrykeypermissionsareinsufficientortheCrystalReportsruntimeisnotinstalledcorrectly.Pleaseinstalltheappropriate......
  • 模板模式(Template Pattern)
    模板模式一、介绍  模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方式使......
  • 组合模式(Composite Pattern)
    组合模式一、概述  组合模式(CompositePattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。二、介绍......
  • 策略模式(Strategy Pattern)
    策略模式一、介绍  在策略模式(StrategyPattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用if...else所带来的复杂和难以维护......
  • STM32bms动力电池管理系统仿真 Battery Simulink电池平衡控制策略模型
    STM32bms动力电池管理系统仿真BatterySimulink电池平衡控制策略模型动力电池管理系统仿真BMS+BatterySimulink控制策略模型,动力电池物理模型,需求说明文档。BMS算法模型包含状态切换模型、SOC估计模型(提供算法说明文档)、电池平衡模型、功率限制模型等,动力电池物理模型包......
  • linux-cmd-iperf网络压测
    网络压测yuminstalliperf#开启server端10.0.0.1iperf-s-i2#开启client端10.0.0.2iperf-c10.0.0.1-i2实例演示#server[root@zuiyoujie01tools]iperf-s-i2------------------------------------------------------------ServerlisteningonTC......
  • An Attempt at Reducing Costs of Disk I/O in Go
    为了实现磁盘上的IO,go语言使用一组IO线程池用来提高CPU的使用率本文是在go语言上尝试了接入了linuxlibaio,并没有发现性能的提升。使用O_DIRECT意味着数据直接到达磁盘上,这将不能有效的利用pagecache用来加速,合并读写请求;O_DIRECT的方式对读写的大小有限制,必须是blocksize大小......
  • STM32bms动力电池管理系统仿真 Battery Simulink电池平衡控制策略模型
    STM32bms动力电池管理系统仿真BatterySimulink电池平衡控制策略模型动力电池管理系统仿真BMS+BatterySimulink控制策略模型,动力电池物理模型,需求说明文档。BMS算法模型包含状态切换模型、SOC估计模型(提供算法说明文档)、电池平衡模型、功率限制模型等,动力电池物理模型包......