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

> 태그를 사용해 컬렉션 또는 컬렉션 내 artifact 버전을 정리합니다. Python SDK 또는 W&B App UI에서 태그를 추가, 제거, 편집할 수 있습니다.

# 태그로 버전 정리하기

레지스트리에서 컬렉션 또는 컬렉션 내 artifact 버전을 정리할 수 있도록 태그를 생성하고 추가합니다. W\&B App UI 또는 W\&B Python SDK를 사용해 컬렉션이나 artifact 버전에 태그를 추가, 수정, 확인 또는 제거할 수 있습니다.

<Note>
  **태그와 alias를 구분해 사용하는 경우**

  특정 artifact 버전을 고유하게 참조해야 할 때는 alias를 사용하세요. 예를 들어 `artifact_name:alias`가 항상 하나의 특정 버전을 가리키도록 하려면 'production' 또는 'latest'와 같은 alias를 사용하세요.

  그룹화하거나 검색할 때 더 유연성이 필요하다면 태그를 사용하세요. 여러 버전이나 컬렉션이 같은 레이블을 공유할 수 있고, 특정 식별자에 하나의 버전만 연결되어야 한다는 보장이 필요하지 않을 때 태그가 적합합니다.
</Note>

<div id="add-a-tag-to-a-collection">
  ## 컬렉션에 태그 추가하기
</div>

W\&B App UI 또는 Python SDK를 사용해 컬렉션에 태그를 추가할 수 있습니다.

<Tabs>
  <Tab title="W&B App">
    W\&B App UI를 사용해 컬렉션에 태그를 추가합니다.

    1. [W\&B Registry](https://wandb.ai/registry)로 이동합니다.
    2. 레지스트리 카드를 클릭합니다.
    3. 컬렉션 이름 옆의 **세부 정보 보기**를 클릭합니다.
    4. 컬렉션 카드에서 **Tags** 필드 옆의 더하기 아이콘(**+**)을 클릭한 다음, 태그 이름을 입력합니다.
    5. 키보드에서 **Enter** 키를 누릅니다.
  </Tab>

  <Tab title="Python SDK">
    ```python theme={null}
    import wandb

    COLLECTION_TYPE = "<collection_type>"
    REGISTRY_NAME = "<registry_name>"
    COLLECTION_NAME = "<collection_name>"

    full_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"

    collection = wandb.Api().artifact_collection(
      type_name = COLLECTION_TYPE, 
      name = full_name
      )

    collection.tags = ["your-tag"]
    collection.save()
    ```
  </Tab>
</Tabs>

<div id="update-tags-that-belong-to-a-collection">
  ## 컬렉션에 속한 태그 업데이트
</div>

태그를 프로그래밍 방식으로 업데이트하려면 다시 할당하거나 `tags` 속성을 변경하면 됩니다. W\&B는 `tags` 속성을 제자리 변경하는 것보다 다시 할당하는 방식을 권장하며, 이는 Python에서도 좋은 관행입니다.

예를 들어, 다음 코드 스니펫은 다시 할당을 사용해 목록을 업데이트하는 일반적인 방법을 보여줍니다. 간단히 하기 위해 [컬렉션에 태그 추가 섹션](#add-a-tag-to-a-collection)의 코드 예제를 이어서 사용합니다.

```python theme={null}
collection.tags = [*collection.tags, "new-tag", "other-tag"]
collection.tags = collection.tags + ["new-tag", "other-tag"]

collection.tags = set(collection.tags) - set(tags_to_delete)
collection.tags = []  # 모든 태그 삭제
```

다음 코드 스니펫은 아티팩트 버전에 속한 tags를 업데이트하기 위해 제자리 변경을 사용하는 방법을 보여줍니다.

```python theme={null}
collection.tags += ["new-tag", "other-tag"]
collection.tags.append("new-tag")

collection.tags.extend(["new-tag", "other-tag"])
collection.tags[:] = ["new-tag", "other-tag"]
collection.tags.remove("existing-tag")
collection.tags.pop()
collection.tags.clear()
```

<div id="view-tags-that-belong-to-a-collection">
  ## 컬렉션에 속한 태그 보기
</div>

W\&B App UI를 사용해 컬렉션에 추가된 태그를 확인할 수 있습니다:

1. [W\&B Registry](https://wandb.ai/registry)로 이동합니다.
2. 레지스트리 카드를 클릭합니다.
3. 컬렉션 이름 옆의 **세부 정보 보기**를 클릭합니다.

컬렉션에 태그가 하나 이상 있으면 컬렉션 카드의 **Tags** 필드 옆에서 해당 태그를 볼 수 있습니다.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/wf6OgoX4kuOqKDn-/images/registry/tag_collection_selected.png?fit=max&auto=format&n=wf6OgoX4kuOqKDn-&q=85&s=05a6dbe7b687f777f03ccf9b681cada3" alt="선택된 태그가 있는 레지스트리 컬렉션" width="2706" height="1904" data-path="images/registry/tag_collection_selected.png" />
</Frame>

컬렉션에 추가된 태그는 해당 컬렉션 이름 옆에도 표시됩니다.

예를 들어, 다음 이미지에서는 "zoo-dataset-tensors-split" 컬렉션에 "sample-tag-1"이라는 태그가 추가되어 있습니다.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541/wf6OgoX4kuOqKDn-/images/registry/tag_collection.png?fit=max&auto=format&n=wf6OgoX4kuOqKDn-&q=85&s=c09256404cc9485e33c79b5dbdbab89c" alt="태그 관리" width="2706" height="1598" data-path="images/registry/tag_collection.png" />
</Frame>

<div id="remove-a-tag-from-a-collection">
  ## 컬렉션에서 태그 제거
</div>

W\&B App UI를 사용하여 컬렉션에서 태그를 제거합니다:

1. [W\&B Registry](https://wandb.ai/registry)로 이동합니다.
2. 레지스트리 카드를 클릭합니다.
3. 컬렉션 이름 옆의 **세부 정보 보기**를 클릭합니다.
4. 컬렉션 카드에서 제거하려는 태그 이름 위에 마우스를 올립니다.
5. 취소 버튼(**X** 아이콘)을 클릭합니다.

<div id="add-a-tag-to-an-artifact-version">
  ## 아티팩트 버전에 태그 추가
</div>

W\&B App UI 또는 Python SDK를 사용하여 컬렉션에 연결된 아티팩트 버전에 태그를 추가합니다.

<Tabs>
  <Tab title="W&B App">
    1. [https://wandb.ai/registry](https://wandb.ai/registry)의 W\&B Registry로 이동합니다.
    2. 레지스트리 카드를 클릭합니다.
    3. 태그를 추가하려는 컬렉션 이름 옆의 **세부 정보 보기**를 클릭합니다.
    4. 아래로 스크롤해 **Versions**로 이동합니다.
    5. 아티팩트 버전 옆의 **View**를 클릭합니다.
    6. **Version** 탭에서 **Tags** 필드 옆의 더하기 아이콘(**+**)을 클릭한 다음 태그 이름을 입력합니다.
    7. 키보드에서 **Enter**를 누릅니다.
  </Tab>

  <Tab title="Python SDK">
    태그를 추가하거나 업데이트하려는 아티팩트 버전을 가져옵니다. 아티팩트 버전을 가져온 후에는 아티팩트 객체의 `tag` 속성에 접근하여 해당 아티팩트의 태그를 추가하거나 수정할 수 있습니다. 하나 이상의 태그를 목록으로 아티팩트의 `tag` 속성에 전달합니다.

    다른 아티팩트와 마찬가지로 run을 생성하지 않고도 W\&B에서 아티팩트를 가져올 수 있으며, run을 생성한 뒤 해당 run 내에서 아티팩트를 가져올 수도 있습니다. 어느 경우든 W\&B 서버의 아티팩트를 업데이트하려면 아티팩트 객체의 `save` 메서드를 호출해야 합니다.

    아래의 적절한 코드 셀을 복사해 붙여넣어 아티팩트 버전의 태그를 추가하거나 수정합니다. `<>` 안의 값은 사용자 환경에 맞게 바꾸세요.

    다음 코드 스니펫은 새 run을 생성하지 않고 아티팩트를 가져와 태그를 추가하는 방법을 보여줍니다:

    ```python title="새 run을 생성하지 않고 아티팩트 버전에 태그 추가" theme={null}
    import wandb

    ARTIFACT_TYPE = "<TYPE>"
    REGISTRY_NAME = "<registry_name>"
    COLLECTION_NAME = "<collection_name>"
    VERSION = "<artifact_version>"

    artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"

    artifact = wandb.Api().artifact(name = artifact_name, type = ARTIFACT_TYPE)
    artifact.tags = ["tag2"] # 하나 이상의 태그를 목록으로 제공합니다
    artifact.save()
    ```

    다음 코드 스니펫은 새 run을 생성해 아티팩트를 가져오고 태그를 추가하는 방법을 보여줍니다:

    ```python title="run 중에 아티팩트 버전에 태그 추가" theme={null}
    import wandb

    REGISTRY_NAME = "<registry_name>"
    COLLECTION_NAME = "<collection_name>"
    VERSION = "<artifact_version>"

    with wandb.init(entity = "<entity>", project="<project>") as run:

        artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"

        artifact = run.use_artifact(artifact_or_name = artifact_name)
        artifact.tags = ["tag2"] # 하나 이상의 태그를 목록으로 제공합니다
        artifact.save()
    ```
  </Tab>
</Tabs>

<div id="update-tags-that-belong-to-an-artifact-version">
  ## 아티팩트 버전에 속한 태그 업데이트하기
</div>

태그는 재할당하거나 `tags` 속성을 수정해 프로그래밍 방식으로 업데이트할 수 있습니다. W\&B는 `tags` 속성을 in-place로 수정하는 대신 재할당할 것을 권장하며, 이는 Python에서도 좋은 관행입니다.

예를 들어, 다음 코드 스니펫은 재할당으로 목록을 업데이트하는 일반적인 방법을 보여줍니다. 간단히 하기 위해 [아티팩트 버전에 태그 추가하기 section](#add-a-tag-to-an-artifact-version)의 코드 예제를 이어서 사용합니다:

```python theme={null}
artifact.tags = [*artifact.tags, "new-tag", "other-tag"]
artifact.tags = artifact.tags + ["new-tag", "other-tag"]

artifact.tags = set(artifact.tags) - set(tags_to_delete)
artifact.tags = []  # 모든 태그 삭제
```

다음 코드 스니펫은 아티팩트 버전에 속한 tags를 업데이트할 때 제자리 변경(in-place mutation)을 사용하는 방법을 보여줍니다:

```python theme={null}
artifact.tags += ["new-tag", "other-tag"]
artifact.tags.append("new-tag")

artifact.tags.extend(["new-tag", "other-tag"])
artifact.tags[:] = ["new-tag", "other-tag"]
artifact.tags.remove("existing-tag")
artifact.tags.pop()
artifact.tags.clear()
```

<div id="view-tags-that-belong-to-an-artifact-version">
  ## 아티팩트 버전에 속한 태그 보기
</div>

W\&B App UI 또는 Python SDK를 사용해 레지스트리에 연결된 아티팩트 버전에 속한 태그를 확인할 수 있습니다.

<Tabs>
  <Tab title="W&B App">
    1. [W\&B Registry](https://wandb.ai/registry)로 이동합니다.
    2. 레지스트리 카드를 클릭합니다.
    3. 태그를 추가하려는 collection의 name 옆에 있는 **View details**를 클릭합니다.
    4. **Versions** 섹션까지 아래로 스크롤합니다.

    아티팩트 버전에 하나 이상의 태그가 있으면 **Tags** 열에서 해당 태그를 확인할 수 있습니다.

    <Frame>
      <img src="https://mintcdn.com/wb-21fd5541/wf6OgoX4kuOqKDn-/images/registry/tag_artifact_version.png?fit=max&auto=format&n=wf6OgoX4kuOqKDn-&q=85&s=5d8e767153d82cc504d0e6856c004641" alt="태그가 있는 아티팩트 버전" width="2708" height="1978" data-path="images/registry/tag_artifact_version.png" />
    </Frame>
  </Tab>

  <Tab title="Python SDK">
    태그를 확인하려면 아티팩트 버전을 가져옵니다. 아티팩트 버전을 가져온 후에는 아티팩트 객체의 `tags` 속성을 확인해 해당 아티팩트에 속한 태그를 볼 수 있습니다.

    다른 아티팩트와 마찬가지로 run을 생성하지 않고도 W\&B에서 아티팩트를 가져올 수 있으며, run을 생성한 뒤 해당 run 내에서 아티팩트를 가져올 수도 있습니다.

    아래의 적절한 코드 셀을 복사해 붙여넣어 아티팩트 버전의 태그를 추가하거나 수정합니다. `<>` 안의 값은 사용자 환경에 맞게 바꾸세요.

    다음 코드 스니펫은 새 run을 생성하지 않고 아티팩트 버전을 가져와 태그를 확인하는 방법을 보여줍니다:

    ```python title="새 run을 생성하지 않고 아티팩트 버전에 태그 추가" theme={null}
    import wandb

    ARTIFACT_TYPE = "<TYPE>"
    REGISTRY_NAME = "<registry_name>"
    COLLECTION_NAME = "<collection_name>"
    VERSION = "<artifact_version>"

    artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"

    artifact = wandb.Api().artifact(name = artifact_name, type = artifact_type)
    print(artifact.tags)
    ```

    다음 코드 스니펫은 새 run을 생성해 아티팩트 버전의 태그를 가져와 확인하는 방법을 보여줍니다:

    ```python title="run 중에 아티팩트 버전에 태그 추가" theme={null}
    import wandb

    REGISTRY_NAME = "<registry_name>"
    COLLECTION_NAME = "<collection_name>"
    VERSION = "<artifact_version>"

    with wandb.init(entity = "<entity>", project="<project>") as run:

        artifact_name = f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"

        artifact = run.use_artifact(artifact_or_name = artifact_name)
        print(artifact.tags)
    ```
  </Tab>
</Tabs>

<div id="remove-a-tag-from-an-artifact-version">
  ## 아티팩트 버전에서 태그 제거
</div>

1. [W\&B Registry](https://wandb.ai/registry)로 이동합니다.
2. 레지스트리 카드를 클릭합니다.
3. 태그를 추가하려는 컬렉션 이름 옆의 **세부 정보 보기**를 클릭합니다.
4. 아래로 스크롤해 **Versions**로 이동합니다.
5. 아티팩트 버전 옆의 **View**를 클릭합니다.
6. **Version** 탭에서 태그 이름 위에 마우스를 올립니다.
7. 취소 버튼(**X** 아이콘)을 클릭합니다.

<div id="find-artifact-versions-with-a-specific-tag">
  ## 특정 태그가 지정된 artifact 버전 찾기
</div>

W\&B Python SDK를 사용하여 특정 태그 세트가 지정된 artifact 버전을 찾습니다:

```python theme={null}
import wandb

api = wandb.Api()
tagged_artifact_versions = api.artifacts(
    type_name = "<artifact_type>",
    name = "<artifact_name>",
    tags = ["<tag_1>", "<tag_2>"]
)

for artifact_version in tagged_artifact_versions:
    print(artifact_version.tags)
```
