The documentation for new frameworks is not out yet, but I've been looking at headers, and the main change I see is support for more limited-precision formats. In particular, we have:
The API also mentions additional attachment points to store scale factors required for these formats. INT2 is particularly interesting since I don't think anybody really supports it currently? Is this an indication that M6 will support all these natively? Who knows? Who cares?
/// An 8-bit floating point format data type with 8 exponent bits.
MTLTensorDataTypeFloat8UE8M0 API_AVAILABLE(macos(27.0), ios(27.0)) = 145,
/// A 2-bit unsigned integer format data type.
MTLTensorDataTypeUInt2 API_AVAILABLE(macos(27.0), ios(27.0)) = 149,
/// A 2-bit signed integer format data type.
MTLTensorDataTypeInt2 API_AVAILABLE(macos(27.0), ios(27.0)) = 150,
/// An 8-bit floating point format data type with 5 exponent bits, 2 mantissa bits and 1 sign bit.
MTLTensorDataTypeFloat8E5M2 API_AVAILABLE(macos(27.0), ios(27.0)) = 141,
/// An 8-bit floating point format data type with 4 exponent bits, 3 mantissa bits and 1 sign bit.
MTLTensorDataTypeFloat8E4M3 API_AVAILABLE(macos(27.0), ios(27.0)) = 142,
/// A 4-bit floating point format data type with 2 exponent bits, 1 mantissa bit and 1 sign bit.
MTLTensorDataTypeFloat4E2M1 API_AVAILABLE(macos(27.0), ios(27.0)) = 148,
The API also mentions additional attachment points to store scale factors required for these formats. INT2 is particularly interesting since I don't think anybody really supports it currently? Is this an indication that M6 will support all these natively? Who knows? Who cares?