Skip to content

Commit 7fa3724

Browse files
author
pengcheng888
committed
issue/565 - 调整python的算子位置到infinicore.nn.functional.py文件中
1 parent 39ec8f0 commit 7fa3724

12 files changed

Lines changed: 90 additions & 60 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ python/infinicore/lib/*.so
99
# Vscode
1010
.vscode/
1111

12+
# Pycharm
13+
.idea/
14+
1215
# Python
1316
__pycache__/
1417
*.egg-info/

python/infinicore/__init__.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,10 @@
2727
from infinicore.ntops import use_ntops
2828
from infinicore.ops.add import add
2929
from infinicore.ops.attention import attention
30-
from infinicore.ops.causal_softmax import causal_softmax
3130
from infinicore.ops.matmul import matmul
3231
from infinicore.ops.rearrange import rearrange
33-
from infinicore.ops.rms_norm import rms_norm
34-
from infinicore.ops.silu import silu
35-
from infinicore.ops.swiglu import swiglu
3632
from infinicore.tensor import (
33+
Tensor,
3734
empty,
3835
from_blob,
3936
ones,
@@ -42,6 +39,8 @@
4239
zeros,
4340
)
4441

42+
from infinicore import nn as nn
43+
4544
__all__ = [
4645
# Classes.
4746
"device",
@@ -74,12 +73,8 @@
7473
# Operations.
7574
"add",
7675
"attention",
77-
"causal_softmax",
7876
"matmul",
7977
"rearrange",
80-
"rms_norm",
81-
"silu",
82-
"swiglu",
8378
"empty",
8479
"from_blob",
8580
"ones",

python/infinicore/nn/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from infinicore.nn import (
2+
functional as functional,
3+
)

python/infinicore/nn/functional.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import infinicore
2+
from infinicore.lib import _infinicore
3+
4+
__all__ = ["causal_softmax", "rms_norm", "silu", "swiglu"]
5+
6+
7+
def causal_softmax(
8+
input: infinicore.Tensor,
9+
out=None
10+
) -> infinicore.Tensor:
11+
r"""Apply a causal softmax function.
12+
"""
13+
14+
if out is None:
15+
return infinicore.Tensor(_infinicore.causal_softmax(input._underlying))
16+
17+
_infinicore.causal_softmax_(out._underlying, input._underlying)
18+
19+
return out
20+
21+
22+
def rms_norm(
23+
input: infinicore.Tensor,
24+
normalized_shape: list[int],
25+
weight: infinicore.Tensor,
26+
eps: float = 1e-5,
27+
out=None
28+
) -> infinicore.Tensor:
29+
r"""Apply Root Mean Square Layer Normalization.
30+
"""
31+
32+
assert normalized_shape == weight.shape, "normalized_shape does not match weight.shape."
33+
34+
if out is None:
35+
return infinicore.Tensor(
36+
_infinicore.rms_norm(input._underlying, weight._underlying, eps)
37+
)
38+
39+
_infinicore.rms_norm_(out._underlying, input._underlying, weight._underlying, eps)
40+
41+
return out
42+
43+
44+
def silu(input: infinicore.Tensor, inplace: bool = False, out=None) -> infinicore.Tensor:
45+
r"""Apply the Sigmoid Linear Unit (SiLU) function, element-wise.
46+
"""
47+
48+
if inplace:
49+
_infinicore.silu_(input._underlying, input._underlying)
50+
return input
51+
52+
if out is None:
53+
return infinicore.Tensor(_infinicore.silu(input._underlying))
54+
55+
_infinicore.silu_(out._underlying, input._underlying)
56+
57+
return out
58+
59+
60+
def swiglu(input: infinicore.Tensor, other: infinicore.Tensor, out=None):
61+
r"""Apply the Swish-Gated Linear Unit (SwiGLU) function, element-wise.
62+
"""
63+
64+
if out is None:
65+
return infinicore.Tensor(_infinicore.swiglu(input._underlying, other._underlying))
66+
67+
_infinicore.swiglu_(out._underlying, input._underlying, other._underlying)
68+
69+
return out

python/infinicore/ops/causal_softmax.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

python/infinicore/ops/rms_norm.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

python/infinicore/ops/silu.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

python/infinicore/ops/swiglu.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

test/infinicore/ops/causal_softmax.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ def torch_operator(self, *args, **kwargs):
132132
return self.torch_causal_softmax(*args, **kwargs)
133133

134134
def infinicore_operator(self, *args, **kwargs):
135-
return infinicore.causal_softmax(*args, **kwargs)
135+
import infinicore.nn.functional as F
136+
137+
return F.causal_softmax(*args, **kwargs)
136138

137139

138140
def main():

test/infinicore/ops/rms_norm.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ def torch_operator(self, x, weight, epsilon=_EPSILON, out=None, **kwargs):
149149

150150
def infinicore_operator(self, x, weight, epsilon=_EPSILON, out=None, **kwargs):
151151
"""InfiniCore RMSNorm implementation"""
152-
return infinicore.rms_norm(x, weight, epsilon, out=out)
152+
import infinicore.nn.functional as F
153+
154+
return F.rms_norm(x, weight.shape, weight, epsilon, out=out)
153155

154156

155157
def main():

0 commit comments

Comments
 (0)