다음을 통해 공유


DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC 구조체(directml.h)

정량화된 데이터에 대해 행렬 곱하기 함수를 수행합니다. 이 연산자는 입력을 기준으로 한 다음 행렬을 곱한 다음 출력을 정량화하는 것과 수학적으로 동일합니다.

이 연산자를 사용하려면 행렬에 입력 텐서를 곱하여 { BatchCount, ChannelCount, Height, Width }형식이 지정된 4D여야 합니다. 행렬 곱하기 연산자는 BatchCount * 독립 행렬 곱셈의 ChannelCount 번호를 수행합니다.

예를 들어 ATensor 크기 있고 BTensor 크기 출력이 있는 경우tensor 크기 있습니다. 그런 다음 행렬 곱하기 연산자는 BatchCount * ChannelCount 독립 행렬 차원 {M,K} x {K,N} = {M,N}을(를) 곱합니다.

함수 시퀀스 해제

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

함수 수량화

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

통사론

struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
  const DML_TENSOR_DESC *ATensor;
  const DML_TENSOR_DESC *AScaleTensor;
  const DML_TENSOR_DESC *AZeroPointTensor;
  const DML_TENSOR_DESC *BTensor;
  const DML_TENSOR_DESC *BScaleTensor;
  const DML_TENSOR_DESC *BZeroPointTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
};

회원

ATensor

형식: const DML_TENSOR_DESC*

A 데이터를 포함하는 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, M, K }합니다.

AScaleTensor

형식: const DML_TENSOR_DESC*

ATensor 크기 조정 데이터를 포함하는 텐서입니다. AScaleTensor 예상 차원은 텐서당 정량화가 필요한 경우 { 1, 1, 1, 1 }, 행당 정량화가 필요한 경우 { 1, 1, M, 1 }. 이러한 크기 조정 값은 A 값의 시한을 지정하는 데 사용됩니다.

메모

배율 값이 0이면 정의되지 않은 동작이 발생합니다.

AZeroPointTensor

형식: _Maybenull_ const DML_TENSOR_DESC*

ATensor 0포인트 데이터를 포함하는 선택적 텐서입니다. AZeroPointTensor의 예상 차원은 텐서당 정량화가 필요한 경우 { 1, 1, 1, 1 } 행당 정량화가 필요한 경우 { 1, 1, M, 1 }. 이러한 0포인트 값은 ATensor 값의 시한을 지정하는 데 사용됩니다.

BTensor

형식: const DML_TENSOR_DESC*

B 데이터를 포함하는 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, K, N }합니다.

BScaleTensor

형식: const DML_TENSOR_DESC*

BTensor 크기 조정 데이터를 포함하는 텐서입니다. BScaleTensor 예상 차원은 텐서 수량화당 필요한 경우 { 1, 1, 1, 1 } 열당 정량화가 필요한 경우 { 1, 1, 1, N }. 이러한 크기 조정 값은 BTensor 값의 시한을 지정하는 데 사용됩니다.

메모

배율 값이 0이면 정의되지 않은 동작이 발생합니다.

BZeroPointTensor

형식: _Maybenull_ const DML_TENSOR_DESC*

BTensor 0포인트 데이터를 포함하는 선택적 텐서입니다. BZeroPointTensor 예상 차원은 텐서 수량화당 필요한 경우 { 1, 1, 1, 1 } 열당 정량화가 필요한 경우 { 1, 1, 1, N }. 이러한 0포인트 값은 BTensor 값의 시한을 지정하는 데 사용됩니다.

OutputScaleTensor

형식: const DML_TENSOR_DESC*

OutputTensor 크기 조정 데이터를 포함하는 텐서입니다. OutputScaleTensor 예상 차원은 텐서당 양자화가 필요한 경우 { 1, 1, 1, 1 }, 행별 양자화가 필요한 경우 { 1, 1, M, 1 }. 이 크기 조정 값은 OutputTensor 값의 시한을 지정하는 데 사용됩니다.

메모

배율 값이 0이면 정의되지 않은 동작이 발생합니다.

OutputZeroPointTensor

형식: _Maybenull_ const DML_TENSOR_DESC*

OutputTensor 0포인트 데이터를 포함하는 선택적 텐서입니다. OutputZeroPointTensor 예상 차원은 텐서당 양자화가 필요한 경우 { 1, 1, 1, 1 }, 행별 양자화가 필요한 경우 { 1, 1, M, 1 }. 이 0포인트 값은 OutputTensor 값의 시한을 지정하는 데 사용됩니다.

OutputTensor

형식: const DML_TENSOR_DESC*

결과를 쓸 텐서입니다. 이 텐서의 차원은 { BatchCount, ChannelCount, M, N }.

가용도

이 연산자는 DML_FEATURE_LEVEL_2_1도입되었습니다.

Tensor 제약 조건

  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensorOutputZeroPointTensor 동일한 DimensionCount있어야 합니다.
  • ATensor, BTensorOutputTensor 동일한 DimensionCount있어야 합니다.
  • BTensorBZeroPointTensor 동일한 DataType있어야 합니다.
  • OutputTensorOutputZeroPointTensor 동일한 DataType있어야 합니다.
  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensorOutputZeroPointTensor 동일한 DimensionCount있어야 합니다.
  • ATensorAZeroPointTensor 동일한 DataType있어야 합니다.

Tensor 지원

DML_FEATURE_LEVEL_4_0 이상

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
ATensor 입력 2 ~4 INT8, UINT8
AScaleTensor 입력 1~4 FLOAT32
AZeroPointTensor 선택적 입력 1~4 INT8, UINT8
BTensor 입력 2 ~4 INT8, UINT8
BScaleTensor 입력 1~4 FLOAT32
BZeroPointTensor 선택적 입력 1~4 INT8, UINT8
OutputScaleTensor 입력 1~4 FLOAT32
OutputZeroPointTensor 선택적 입력 1~4 INT8, UINT8
OutputTensor 출력 2 ~4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 이상

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
ATensor 입력 4 INT8, UINT8
AScaleTensor 입력 4 FLOAT32
AZeroPointTensor 선택적 입력 4 INT8, UINT8
BTensor 입력 4 INT8, UINT8
BScaleTensor 입력 4 FLOAT32
BZeroPointTensor 선택적 입력 4 INT8, UINT8
OutputScaleTensor 입력 4 FLOAT32
OutputZeroPointTensor 선택적 입력 4 INT8, UINT8
OutputTensor 출력 4 INT8, UINT8

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
헤더 directml.h