> ## Documentation Index
> Fetch the complete documentation index at: https://avala.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 추적성

> 모든 모델 예측을 해당 학습 데이터, 어노테이션, QA 리뷰까지 추적합니다

Avala는 모든 프레임, 라벨, 리뷰 결정, 내보내기 버전을 단일 플랫폼에서 연결합니다. 모델이 에지 케이스에서 실패하면, 예측에 영향을 준 정확한 학습 라벨까지 추적하여 추측 대신 근본 원인을 해결할 수 있습니다.

## Avala에서 추적성의 의미

Avala의 모든 어노테이션은 전체 리니지 메타데이터를 포함합니다:

| 엔티티         | 추적 항목                                     |
| ----------- | ----------------------------------------- |
| **데이터셋 항목** | 소스 파일 URL, 업로드 타임스탬프, 시퀀스 멤버십, 센서 메타데이터   |
| **작업**      | 배정된 어노테이터, 생성 시간, 완료 시간, 상태 전환            |
| **결과**      | 어노테이션 데이터, 사용된 도구, 어노테이터 ID, 제출 타임스탬프     |
| **QA 리뷰**   | 리뷰어 ID, 리뷰 결정(승인/거부/수정), 리뷰 코멘트           |
| **내보내기**    | 내보내기 형식, 포함된 데이터셋/프로젝트/슬라이스, 생성 타임스탬프, 버전 |

이를 통해 내보낸 라벨에서 시작하여 전체 체인을 역추적할 수 있습니다: 어떤 어노테이터가 생성했는지, QA를 통과했는지, 어떤 데이터셋 항목에서 왔는지, 각 단계가 언제 발생했는지.

## 연습: 모델 실패 디버깅

추적성이 프로덕션 모델 이슈를 디버깅하는 데 어떻게 도움이 되는지 구체적인 예시입니다.

### 1. 모델이 에지 케이스에서 실패

인지 모델이 LiDAR 스캔에서 부분적으로 가려진 보행자를 잘못 분류합니다. 예측을 식별하고 모델이 왜 이런 행동을 학습했는지 이해하고 싶습니다.

### 2. 학습 데이터 찾기

SDK를 사용하여 모델의 학습 세트에 기여한 데이터셋 항목을 내보내기에서 검색합니다.

```python theme={null}
from avala import Client

client = Client()

# 학습에 사용된 내보내기 가져오기
export = client.exports.get("export_abc123")
print(f"Export: {export.name}")
print(f"Format: {export.format}")
print(f"Created: {export.created_at}")
```

### 3. 개별 결과 검사

내보내기의 각 결과에는 소스 데이터셋 항목, 어노테이터 정보, QA 상태가 포함됩니다.

```python theme={null}
# 내보내기에 사용된 프로젝트의 작업 목록
tasks = client.tasks.list(project="project_uid")

for task in tasks:
    print(f"Task {task.uid}")
    print(f"  Status: {task.status}")
    print(f"  Dataset: {task.dataset_name}")
    print(f"  Item: {task.dataset_item_name}")
```

### 4. 소스까지 역추적

문제가 있는 라벨을 식별한 후, 원본 데이터셋 항목을 조회하여 소스 파일, 센서 메타데이터, 전체 어노테이션 이력을 확인할 수 있습니다.

```python theme={null}
# 특정 데이터셋 항목 가져오기
item = client.datasets.get_item(
    dataset="dataset_uid",
    item="item_uid"
)

print(f"Source: {item.source_url}")
print(f"Uploaded: {item.created_at}")
print(f"Sequence: {item.sequence_name}")
```

### 5. 수정 및 재학습

근본 원인이 식별되면 -- 예를 들어, 가려진 보행자에 대한 어노테이션 오류 -- Avala에서 라벨을 수정하고, 새 내보내기를 생성하고, 수정된 데이터로 모델을 재학습합니다.

```python theme={null}
# 수정된 라벨로 새 내보내기 생성
new_export = client.exports.create(
    name="Training v2 - fixed occlusion labels",
    format="avala-json-external",
    projects=["project_uid"]
)

print(f"New export: {new_export.uid}")
```

## 이점

### 재현성

모든 내보내기는 버전이 관리됩니다. 내보내기 UID를 참조하여 모든 모델 버전에 사용된 정확한 학습 세트를 재생성할 수 있습니다. 어떤 라벨이 포함되거나 제외되었는지 추측할 필요가 없습니다.

### 더 빠른 디버깅

수천 개의 어노테이션을 수동으로 검색하여 오류를 찾는 대신, 모델 실패에서 그 원인이 된 특정 라벨까지 직접 추적합니다. 며칠이 걸리던 작업이 몇 분이면 됩니다.

### 컴플라이언스 및 감사 추적

규제 산업(자동차, 의료, 방위)의 경우, 추적성은 감사인이 요구하는 문서 추적을 제공합니다. 모든 어노테이션 결정은 귀속되고, 타임스탬프가 찍히고, QA 리뷰와 연결됩니다.

### 지속적 개선

특정 어노테이터, 리뷰 단계, 데이터셋 버전과 모델 성능을 상관 분석하여 시간에 따른 어노테이션 품질을 추적합니다. 체계적인 라벨링 이슈가 학습 파이프라인에 전파되기 전에 식별합니다.

## API를 통한 추적성

모든 추적성 데이터는 REST API와 SDK를 통해 사용할 수 있습니다. 주요 엔드포인트:

| 엔드포인트                                   | 반환 내용                                |
| --------------------------------------- | ------------------------------------ |
| `GET /api/v1/exports/{uid}/`            | 데이터셋, 프로젝트, 생성 타임스탬프를 포함한 내보내기 메타데이터 |
| `GET /api/v1/tasks/`                    | 상태, 어노테이터, 데이터셋 항목 참조를 포함한 작업 목록     |
| `GET /api/v1/datasets/{uid}/items/`     | 소스 URL과 시퀀스 멤버십을 포함한 데이터셋 항목         |
| `GET /api/v1/datasets/{uid}/sequences/` | 프레임 수와 항목 참조를 포함한 시퀀스                |

전체 엔드포인트 문서는 [API 레퍼런스](/docs/api-reference/overview)를, 타입이 지원되는 접근은 [Python SDK](/docs/ko/sdks/python)와 [TypeScript SDK](/docs/ko/sdks/typescript)를 참조하세요.

## 다음 단계

<CardGroup cols={2}>
  <Card title="" icon="shield-check" href="/docs/annotation/guides/quality-control">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>품질 관리</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>Avala의 다단계 QA 워크플로우가 어떻게 어노테이션 오류를 모델에 도달하기 전에 포착하는지 알아보세요.</p>
  </Card>

  <Card title="" icon="file-export" href="/docs/api-reference/exports">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>내보내기</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>전체 리니지 메타데이터가 포함된 어노테이션 데이터의 버전 관리 내보내기를 생성하세요.</p>
  </Card>

  <Card title="" icon="chart-bar" href="/docs/ko/quality-sla">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>품질 SLA</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>Avala의 품질 보증, 정확도 목표, 처리 시간을 이해하세요.</p>
  </Card>

  <Card title="" icon="python" href="/docs/ko/sdks/python">
    <p style={{fontWeight: 600, fontSize: '18px', marginBottom: '4px', marginTop: '8px', color: 'inherit'}}>Python SDK</p>
    <p style={{fontSize: '14px', marginTop: '0px', opacity: 0.6}}>SDK를 설치하고 프로그래밍 방식으로 데이터를 쿼리하기 시작하세요.</p>
  </Card>
</CardGroup>
