StableHLO 통역사 체크리스트

이 도움말에서는 Google 게시자 태그 구현 및 검토를 위한 가이드라인을 통역해 줍니다. 의도적으로 몇 가지 보조 작업을 포함했습니다. 확인자 및 유형 추론과 관련된 항목이 포함됩니다. 인터프리터 구현과 함께 이러한 측면의 작업을 진행합니다.

오퍼레이션을 구현하는 동안

  1. 테스트 전략을 명시적으로 서면 (PR 설명에 포함)합니다. 다음과 유사: this를 사용하려면 검증 및 유형 추론을 검토하는 동안 참조로 사용합니다. 메서드, 해당 테스트가 포함됩니다. 검토자는 할 수 있습니다.
  2. 컨설트 hlo_evaluator 까다로운 구현 세부정보와 잠재적인 기능 격차를 파악할 수 있습니다.
  3. 버그가 발견되면 해당 소프트웨어 구성요소에 대한 티켓을 제출합니다. 문제가 있을 수 있습니다

오퍼레이션을 구현한 후

  1. StablehloOps.td에서:

    1. 작업 ODS의 summary가 표준 형식을 따르는지 확인합니다. (관련 티켓)
    2. 다음에서 제약 조건 라벨 (예: Cn 또는 In)을 참조하는 주석을 추가합니다. 작업 XyzOp에 대한 xyz_cn 또는 xyz_in 형식의 사양으로, ODS의 제약 조건과 사양 간의 대응 관계를 나타냅니다. 이 다음 예시에서는 제약조건 라벨을 주석으로 추가하는 방법을 보여줍니다. MLr TraitsTypeConstraints와 함께 xyz_c4는 다음을 나타냅니다. StableHLO_FooOp 클래스에 정의된 제약 조건 (예: StableHLO_ShapedInterfaceOp, StableHLO_UnaryElementwiseOp, StableHLO_Op 등).

       def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1,
           Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/
            ...
         let summary = "Xyz operation";
         let arguments = (ins
            1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/
            HLO_Tensor:$b, /*xyz_i2*/
            ....
         );
      );
      
  2. TypeInference.cpp에서 및 StablehloOps.cpp:

    1. '다음 속성을 확인하세요. ..."를 선택합니다.
    2. 다음에서 제약 조건 라벨 (예: Cn 또는 In)을 참조하는 주석을 추가합니다. 작업 XyzOp의 경우 xyz_cn 또는 xyz_in 형식의 사양으로, 검증자 및 형태 함수의 어떤 부분이 해당하는가 제약 조건을 기준으로 지정할 수 있습니다
      1. 제약 조건 라벨이 여러 개인 코멘트가 있거나 동일한 제약조건 라벨이 있는 댓글이 여러 개 있습니다. 모든 것은 제약 조건이 구현되는 방식을 정의합니다. 연속적인 제약 조건이 있는 경우 xyz_cn...xyz_cm, xyz_in...xyz_jn로 압축합니다.
      2. 구현 VS와 사양의 구현과 비교하면 해당 불일치를 반영한 미해결 문제가 있습니다.
  3. 통역 테스트:

    1. <op_mnemonic>.mlir라는 파일을 추가합니다.
    2. 테스트 가이드라인에 따라 테스트를 작성합니다.
  4. testdata 디렉터리에서 다음을 실행합니다.

    1. 새로 추가된 작업이 적용되는 사용 중지된 테스트를 실행합니다.
    2. 테스트를 통과하면 RUN-DISABLEDRUN로 변환하여 테스트를 사용 설정합니다.
    3. 정밀도 불일치 이외의 이유로 테스트가 실패하면 구현/테스트입니다.
    4. 정밀도 불일치의 경우 테스트에 RUN-DISABLED(#1278) 태그를 지정합니다( 아직 완료되지 않은 것입니다.
  5. ops_stablehlo.mlir:

    1. 각각에 대해 적어도 하나의 테스트 (양성 또는 음성)가 있어야 합니다. 인증자 및 유형 추론 메서드의 제약 조건 제약 조건 검사에서 제외됩니다. 이 테스트는 대부분 음성 결과이며 제약 조건이 충족되지 않거나 양성인지 여부를 테스트하고 올바른 모양임을 알 수 있습니다.
    2. 테스트 중인 작업과 관련된 모든 테스트가 배치되었는지 확인합니다. 있습니다.
    3. 테스트 중인 작업과 관련된 모든 테스트가 앞에 CHECK-LABEL 조명 매크로가 추가됩니다.
    4. 다음 형식을 사용하여 테스트의 함수 이름을 선택합니다. 함수 테스트 제약 조건 Cn, Im의 경우 xyz_cn_im_... 작업 XyzOp 등 제안된 형식이 적용하고 기존 이름을 유지합니다.
    5. 위 단계가 완료되면 오퍼레이션과 관련된 모든 테스트를 정렬합니다. 알파벳 순으로 표시됩니다.
    6. ccov 작업의 범위가 90% 이상임
  6. infer_stablehlo.mlir:

    1. 셰이프 추론 테스트와 관련된 모든 제약 조건이 있는지 확인합니다. 을 이 파일에 추가해야 합니다.
    2. 모든 형상 추론 테스트를 ops_stablehlo.mlir에서 이동합니다. 파일을 이 파일에 넣으세요.
  7. spec.md에서:

    1. stablehlo/tests/interpret/<op_mnemonic>.mlir에 링크 추가 '예시' 섹션 (예: 예 더보기)
    2. 사양에 예가 1개만 있는지 확인합니다.
    3. 사양 예시가 테스트 가이드라인을 따르는지 확인합니다.
    4. 사양 예시 테스트를 해석 가능한지 확인합니다.
    5. 사양 예가 ODS의 예시와 동일한지 확인합니다.
  8. status.md:

    1. '통역 모드' 업데이트 열을 yes로 변경합니다.