未提供项目描述
项目描述
ml_dtypes
ml_dtypes
是机器学习库中使用的几个NumPy数据类型扩展的独立实现,包括
bfloat16
:标准float16
格式的替代品float8_*
:包括以下几种实验性8位浮点表示float8_e3m4
float8_e4m3
float8_e4m3b11fnuz
float8_e4m3fn
float8_e4m3fnuz
float8_e5m2
float8_e5m2fnuz
- Microscaling (MX) 子字节浮点表示包括
float4_e2m1fn
float6_e2m3fn
float6_e3m2fn
int2
,int4
,uint2
和uint4
:低精度整数类型。
以下为这些数字格式的说明。
安装
ml_dtypes
包在 Python 3.9-3.12 版本上进行了测试,可以使用以下命令进行安装
pip install ml_dtypes
要测试您的安装,您可以运行以下命令
pip install absl-py pytest
pytest --pyargs ml_dtypes
从源码构建,请克隆仓库并运行
git submodule init
git submodule update
pip install .
示例用法
>>> from ml_dtypes import bfloat16
>>> import numpy as np
>>> np.zeros(4, dtype=bfloat16)
array([0, 0, 0, 0], dtype=bfloat16)
导入 ml_dtypes
也会将数据类型注册到 numpy 中,这样就可以通过它们的字符串名称来引用它们
>>> np.dtype('bfloat16')
dtype(bfloat16)
>>> np.dtype('float8_e5m2')
dtype(float8_e5m2)
实现浮点格式的规格说明
bfloat16
bfloat16
数字是一个16位截断的单精度浮点数。
指数:8,尾数:7,指数偏移量:127。IEEE 754,有 NaN 和 inf。
float4_e2m1fn
指数:2,尾数:1,偏移量:1。
扩展范围:没有 inf,没有 NaN。
微缩格式,4位(编码:0bSEEM
),使用字节存储(最高4位未使用)。NaN 表示法未定义。
可能的绝对值:[0
,0.5
,1
,1.5
,2
,3
,4
,6
]
float6_e2m3fn
指数:2,尾数:3,偏移量:1。
扩展范围:没有 inf,没有 NaN。
微缩格式,6位(编码:0bSEEMMM
),使用字节存储(最高2位未使用)。NaN 表示法未定义。
可能的值范围:[-7.5
;7.5
]
float6_e3m2fn
指数:3,尾数:2,偏移量:3。
扩展范围:没有 inf,没有 NaN。
微缩格式,4位(编码:0bSEEEMM
),使用字节存储(最高2位未使用)。NaN 表示法未定义。
可能的值范围:[-28
;28
]
float8_e3m4
指数:3,尾数:4,偏移量:3。IEEE 754,有 NaN 和 inf。
float8_e4m3
指数:4,尾数:3,偏移量:7。IEEE 754,有 NaN 和 inf。
float8_e4m3b11fnuz
指数:4,尾数:3,偏移量:11。
扩展范围:没有 inf,NaN 由 0b1000'0000 表示。
float8_e4m3fn
指数:4,尾数:3,偏移量:7。
扩展范围:没有 inf,NaN 由 0bS111'1111 表示。
fn
后缀是为了与相应的 LLVM/MLIR 类型保持一致,表示此类型与 IEEE-754 不一致。f
表示它是有限值。n
表示它包括 NaN,但只在外部范围内。
float8_e4m3fnuz
3位尾数的8位浮点数。
一个带有1位符号位、4位指数和3位尾数的8位浮点类型。后缀 fnuz
与 LLVM/MLIR 命名一致,并来自与 IEEE 浮点约定的差异。《F》表示“有限”(没有无穷大),《N》表示具有特殊 NaN 编码,《UZ》表示无符号零。
此类型具有以下特性
- 位编码:S1E4M3 -
0bSEEEEMMM
- 指数偏移量:8
- 不支持无穷大
- NaN:支持,当符号位设置为 1,指数位和尾数位设置为全 0 时 -
0b10000000
- 当指数为 0 时为非规格化数
float8_e5m2
指数:5,尾数:2,偏移量:15。IEEE 754,有 NaN 和 inf。
float8_e5m2fnuz
2位尾数的8位浮点数。
一个带有1位符号位、5位指数和2位尾数的8位浮点类型。后缀 fnuz
与 LLVM/MLIR 命名一致,并来自与 IEEE 浮点约定的差异。《F》表示“有限”(没有无穷大),《N》表示具有特殊 NaN 编码,《UZ》表示无符号零。
此类型具有以下特性
- 位编码:S1E5M2 -
0bSEEEEEMM
- 指数偏移量:16
- 不支持无穷大
- NaN:支持,当符号位设置为 1,指数位和尾数位设置为全 0 时 -
0b10000000
- 当指数为 0 时为非规格化数
float8_e8m0fnu
OpenCompute MX 缩放格式 E8M0,具有以下属性
- 无符号格式
- 8位指数
- 指数范围从 -127 到 127
- 没有零和无穷大
- 单个 NaN 值(0xFF)。
int2
、int4
、uint2
和 uint4
2位和4位整数类型,其中每个元素以未打包的形式表示(即,填充到内存中的字节)。
NumPy 不支持小于单字节的类型:例如,数组中相邻元素之间的距离(.strides
)以字节数的整数表示。放宽此限制将是一项重大的工程项目。因此,这些类型使用非打包表示法,其中数组的每个元素在内存中填充至一个字节。每个字节的两个或四个低位包含数字的表示,而其余的高位被忽略。
低精度算术的怪癖
如果您正在探索在代码中使用低精度 dtypes,您应小心预测精度损失可能导致意外结果的情况。一个例子是聚合函数 sum
的行为;考虑以下 NumPy 中的 bfloat16
求和(使用版本 1.24.2 运行)
>>> from ml_dtypes import bfloat16
>>> import numpy as np
>>> rng = np.random.default_rng(seed=0)
>>> vals = rng.uniform(size=10000).astype(bfloat16)
>>> vals.sum()
256
真实总和应接近 5000,但 numpy 返回的是 exactly 256:这是因为 bfloat16
没有足够的精度来通过小于 1
的值增加 256
>>> bfloat16(256) + bfloat16(1)
256
256 之后,bfloat16 的下一个可表示的值是 258
>>> np.nextafter(bfloat16(256), bfloat16(np.inf))
258
为了获得更好的结果,您可以指定累加应使用更高精度的类型,如 float32
>>> vals.sum(dtype='float32').astype(bfloat16)
4992
与 NumPy 不同,像 JAX 这样的项目,它们更原生地支持低精度算术,通常会自动执行这类高精度累加
>>> import jax.numpy as jnp
>>> jnp.array(vals).sum()
Array(4992, dtype=bfloat16)
许可
这不是一个官方支持的 Google 产品。
ml_dtypes
源代码根据 Apache 2.0 许可证授权(见 LICENSE)。预编译的 wheel 文件使用 EIGEN 项目构建,该项目根据 MPL 2.0 许可证发布(见 LICENSE.eigen)。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建的分发
ml_dtypes-0.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e7d3a380fe73a63c884f06136f8baa7a5249cc8e9fdec677997dd78549f8128 |
|
MD5 | 0d4d585a69dc36ce685c487c99fcc59a |
|
BLAKE2b-256 | ab79717c5e22ad25d63ce3acdfe8ff8d64bdedec18914256c59b838218708b16 |
ml_dtypes-0.5.0-cp313-cp313-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb5cc7b25acabd384f75bbd78892d0c724943f3e2e1986254665a1aa10982e07 |
|
MD5 | e5569fd81ab1c49088e803176a37034a |
|
BLAKE2b-256 | 148730323ad2e52f56262019a4493fe5f5e71067c5561ce7e2f9c75de520f5e8 |
哈希值 对于 ml_dtypes-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54415257f00eb44fbcc807454efac3356f75644f1cbfc2d4e5522a72ae1dacab |
|
MD5 | 8f9e7e2086082e739e0c612c7e453dc2 |
|
BLAKE2b-256 | 4cb4d766586e24e7a073333c8eb8bd9275f3c6fe0569b509ae7b1699d4f00c74 |
哈希值 对于 ml_dtypes-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e04fde367b2fe901b1d47234426fe8819909bd1dd862a5adb630f27789c20599 |
|
MD5 | 2c5d3a7e29eb10ef5961b8f2fb386f95 |
|
BLAKE2b-256 | edc6358d85e274e22d53def0c85f3cbe0933475fa3cf6922e9dca66eb25cb22f |
哈希值 对于 ml_dtypes-0.5.0-cp313-cp313-macosx_10_13_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d3b3db9990c3840986a0e70524e122cfa32b91139c3653df76121ba7776e015f |
|
MD5 | 0effb40dfc11661839dfd5e08bde144e |
|
BLAKE2b-256 | b34a18f670a2703e771a6775fbc354208e597ff062a88efb0cecc220a282210b |
哈希值 对于 ml_dtypes-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a38df8df61194aeaae1ab7579075779b4ad32cd1cffd012c28be227fa7f2a70a |
|
MD5 | 8f365d00020fc5709a2e9333344ee72d |
|
BLAKE2b-256 | 6fd31321715a95e856d4ef4fba24e4351cf5e4c89d459ad132a8cba5fe257d72 |
哈希值 对于 ml_dtypes-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a988bac6572630e1e9c2edd9b1277b4eefd1c86209e52b0d061b775ac33902ff |
|
MD5 | 0cb3c4089d4906a8d504b14927768eaf |
|
BLAKE2b-256 | 3175bf571247bb3dbea73aa33ccae57ce322b9688003cfee2f68d303ab7b987b |
哈希值 对于 ml_dtypes-0.5.0-cp312-cp312-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d4b1a70a3e5219790d6b55b9507606fc4e02911d1497d16c18dd721eb7efe7d0 |
|
MD5 | 9d42d39539020fdec89f46479d2a0027 |
|
BLAKE2b-256 | 1cb7a067839f6e435785f34b09d96938dccb3a5d9502037de243cb84a2eb3f23 |
哈希值 对于 ml_dtypes-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2e7534392682c3098bc7341648c650864207169c654aed83143d7a19c67ae06f |
|
MD5 | 9339d09dba861a6b1e4dc3beb2f5febd |
|
BLAKE2b-256 | 8965ffdbf3489b0ba2213674ea347fad3a11747be64d2d23d888f9e5abe80a18 |
哈希值 对于 ml_dtypes-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 76942f6aeb5c40766d5ea62386daa4148e6a54322aaf5b53eae9e7553240222f |
|
MD5 | c079d58d78eb8622c8d52ab173fb1a85 |
|
BLAKE2b-256 | 199314896596644dad2e041ac5ca7237e6233c484f7defa186ff88b18ee6110b |
哈希值 对于 ml_dtypes-0.5.0-cp311-cp311-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 60275f2b51b56834e840c4809fca840565f9bf8e9a73f6d8c94f5b5935701215 |
|
MD5 | 8c9ee5027b50cfc72c87a5bfb9ef794f |
|
BLAKE2b-256 | fe298968fd7ee026c0d04c553fb1ce1cd67f9da668cd567d62c0cdc995ce989e |
哈希值 对于 ml_dtypes-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7a9152f5876fef565516aa5dd1dccd6fc298a5891b2467973905103eb5c7856 |
|
MD5 | daed8ab11730fd7f2a197ef6650e5ef1 |
|
BLAKE2b-256 | 9a5bd47361f882ff2ae27d764f314d18706c69859da60a6c78e6c9e81714c792 |
哈希值 for ml_dtypes-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab046f2ff789b1f11b2491909682c5d089934835f9a760fafc180e47dcb676b8 |
|
MD5 | 12844268a0b7308917a5c173d50dd1c5 |
|
BLAKE2b-256 | 0bb195e7995f031bb3890884ddb22e331f24c49b0a4a8f6c448ff5984c86012e |
哈希值 for ml_dtypes-0.5.0-cp310-cp310-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8c32138975797e681eb175996d64356bcfa124bdbb6a70460b9768c2b35a6fa4 |
|
MD5 | e5dd5eb72e9657d1ea9377b0fe339de3 |
|
BLAKE2b-256 | 83500a2048895a764b138638b5e7a62436545eb206948a5e6f77d9d5a4b02479 |
哈希值 for ml_dtypes-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a03fc861b86cc586728e3d093ba37f0cc05e65330c3ebd7688e7bae8290f8859 |
|
MD5 | 536f7535782c3037d53dbf4db2c2fd38 |
|
BLAKE2b-256 | a86f49effaafbc24c7665bcea42cacb22e7198bbab5b473d908c5900c6bb6a59 |
哈希值 for ml_dtypes-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 099e09edd54e676903b4538f3815b5ab96f5b119690514602d96bfdb67172cbe |
|
MD5 | 84d607293140c464c981e4b77dc303be |
|
BLAKE2b-256 | e6c4a21c68253584c678c98490894bf809e943829a380018c0fdd2e34288b07b |
哈希值 for ml_dtypes-0.5.0-cp39-cp39-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f2b59233a0dbb6a560b3137ed6125433289ccba2f8d9c3695a52423a369ed15 |
|
MD5 | 43df0029964519796361499ab4ba62c3 |
|
BLAKE2b-256 | ecc76e4018b7de2189b8264f8787b413aa7c9a914332ea0e8c7e1057936594cd |