Quick patch to scope xformer imports until a better solution

This commit is contained in:
Jaret Burkett committed 2024-09-28 15:36:42 -06:00
1 parent 2e5f6668dc
commit b4f64de4c2
2 files changed
+10 -8

No files matched your search

+1 -2
View File
@@ -32,5 +32,4 @@ sentencepiece
huggingface_hub huggingface_hub
peft peft
gradio gradio
python-slugify python-slugify
xformers
+9 -6
View File
@@ -1,15 +1,16 @@
import math import math
from typing import List, Optional, Tuple, Any, Union from typing import List, Optional, Tuple, Any, Union, TYPE_CHECKING
import os import os
import torch import torch
import torch.nn as nn import torch.nn as nn
from dataclasses import dataclass from dataclasses import dataclass
from xformers.ops.fmha.attn_bias import BlockDiagonalMask
from xformers.ops.fmha import memory_efficient_attention
from huggingface_hub import snapshot_download from huggingface_hub import snapshot_download
from safetensors.torch import load_file from safetensors.torch import load_file
import json import json
if TYPE_CHECKING:
from xformers.ops.fmha.attn_bias import BlockDiagonalMask
class RMSNorm(torch.nn.Module): class RMSNorm(torch.nn.Module):
def __init__(self, dim: int, eps: float = 1e-6): def __init__(self, dim: int, eps: float = 1e-6):
@@ -86,8 +87,9 @@ class Attention(nn.Module):
x: torch.Tensor, x: torch.Tensor,
freqs_cis: torch.Tensor, freqs_cis: torch.Tensor,
cache: Optional[Any] = None, cache: Optional[Any] = None,
mask: Optional[BlockDiagonalMask] = None, mask: Optional['BlockDiagonalMask'] = None,
) -> torch.Tensor: ) -> torch.Tensor:
from xformers.ops.fmha import memory_efficient_attention
assert mask is None or cache is None assert mask is None or cache is None
seqlen_sum, _ = x.shape seqlen_sum, _ = x.shape
@@ -155,7 +157,7 @@ class TransformerBlock(nn.Module):
x: torch.Tensor, x: torch.Tensor,
freqs_cis: torch.Tensor, freqs_cis: torch.Tensor,
cache: Optional[Any] = None, cache: Optional[Any] = None,
mask: Optional[BlockDiagonalMask] = None, mask: Optional['BlockDiagonalMask'] = None,
) -> torch.Tensor: ) -> torch.Tensor:
r = self.attention.forward(self.attention_norm(x), freqs_cis, cache) r = self.attention.forward(self.attention_norm(x), freqs_cis, cache)
h = x + r h = x + r
@@ -317,6 +319,7 @@ class PixtralVisionEncoder(nn.Module):
self, self,
images: List[torch.Tensor], images: List[torch.Tensor],
) -> torch.Tensor: ) -> torch.Tensor:
from xformers.ops.fmha.attn_bias import BlockDiagonalMask
""" """
Args: Args:
images: list of N_img images of variable sizes, each of shape (C, H, W) images: list of N_img images of variable sizes, each of shape (C, H, W)
@@ -387,7 +390,7 @@ class VisionTransformerBlocks(nn.Module):
def forward( def forward(
self, self,
x: torch.Tensor, x: torch.Tensor,
mask: BlockDiagonalMask, mask: 'BlockDiagonalMask',
freqs_cis: Optional[torch.Tensor], freqs_cis: Optional[torch.Tensor],
) -> torch.Tensor: ) -> torch.Tensor:
for layer in self.layers: for layer in self.layers: