์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Triton ์ถ”๋ก  ์„œ๋ฒ„ Ultralytics YOLOv8

Triton ์ถ”๋ก  ์„œ๋ฒ„ (์ด์ „ ๋ช…์นญ: TensorRT ์ถ”๋ก  ์„œ๋ฒ„)๋Š” NVIDIA ์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. NVIDIA GPU์— ์ตœ์ ํ™”๋œ ํด๋ผ์šฐ๋“œ ์ถ”๋ก  ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Triton ์€ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋Œ€๊ทœ๋ชจ๋กœ AI ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๋Š” ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. Ultralytics YOLOv8 ๊ณผ Triton ์ถ”๋ก  ์„œ๋ฒ„๋ฅผ ํ†ตํ•ฉํ•˜๋ฉด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ ๋”ฅ ๋Ÿฌ๋‹ ์ถ”๋ก  ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ํ†ตํ•ฉ์„ ์„ค์ •ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.



Watch: ์‹œ์ž‘ํ•˜๊ธฐ NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„.

Triton ์ถ”๋ก  ์„œ๋ฒ„๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Triton ์ถ”๋ก  ์„œ๋ฒ„๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. TensorFlow , PyTorch, ONNX ๋Ÿฐํƒ€์ž„ ๋“ฑ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๋”ฅ ๋Ÿฌ๋‹ ๋ฐ ๋จธ์‹  ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ๋‹จ์ผ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์—์„œ ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ์„œ๋น„์Šคํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์—†์ด ๋™์  ๋ชจ๋ธ ๋กœ๋”ฉ ๋ฐ ์–ธ๋กœ๋”ฉ.
  • ์•™์ƒ๋ธ” ์ถ”๋ก ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • A/B ํ…Œ์ŠคํŠธ ๋ฐ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ.

์ „์ œ ์กฐ๊ฑด

๊ณ„์† ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ถฉ์กฑ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

  • ๋จธ์‹ ์— Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค์น˜ tritonclient:
    pip install tritonclient[all]
    

YOLOv8 ์—์„œ ONNX ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

๋ชจ๋ธ์„ Triton ์— ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ONNX ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ONNX ํ˜•์‹์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋”ฅ ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„์— ๋ชจ๋ธ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹(Open Neural Network Exchange)์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— export ํ•จ์ˆ˜์—์„œ YOLO ํด๋ž˜์Šค:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model

# Export the model
onnx_file = model.export(format="onnx", dynamic=True)

Triton ๋ชจ๋ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์„ค์ •

Triton ๋ชจ๋ธ ์ €์žฅ์†Œ๋Š” Triton ์—์„œ ๋ชจ๋ธ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

  1. ํ•„์š”ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค:

    from pathlib import Path
    
    # Define paths
    model_name = "yolo"
    triton_repo_path = Path("tmp") / "triton_repo"
    triton_model_path = triton_repo_path / model_name
    
    # Create directories
    (triton_model_path / "1").mkdir(parents=True, exist_ok=True)
    
  2. ๋‚ด๋ณด๋‚ธ ONNX ๋ชจ๋ธ์„ Triton ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค:

    from pathlib import Path
    
    # Move ONNX model to Triton Model path
    Path(onnx_file).rename(triton_model_path / "1" / "model.onnx")
    
    # Create config file
    (triton_model_path / "config.pbtxt").touch()
    

Triton ์ถ”๋ก  ์„œ๋ฒ„ ์‹คํ–‰

Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Triton ์ถ”๋ก  ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

import contextlib
import subprocess
import time

from tritonclient.http import InferenceServerClient

# Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
tag = "nvcr.io/nvidia/tritonserver:23.09-py3"  # 6.4 GB

# Pull the image
subprocess.call(f"docker pull {tag}", shell=True)

# Run the Triton server and capture the container ID
container_id = (
    subprocess.check_output(
        f"docker run -d --rm -v {triton_repo_path}:/models -p 8000:8000 {tag} tritonserver --model-repository=/models",
        shell=True,
    )
    .decode("utf-8")
    .strip()
)

# Wait for the Triton server to start
triton_client = InferenceServerClient(url="localhost:8000", verbose=False, ssl=False)

# Wait until model is ready
for _ in range(10):
    with contextlib.suppress(Exception):
        assert triton_client.is_model_ready(model_name)
        break
    time.sleep(1)

๊ทธ๋Ÿฐ ๋‹ค์Œ Triton ์„œ๋ฒ„ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๋ก ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

from ultralytics import YOLO

# Load the Triton Server model
model = YOLO("http://localhost:8000/yolo", task="detect")

# Run inference on the server
results = model("path/to/image.jpg")

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค:

# Kill and remove the container at the end of the test
subprocess.call(f"docker kill {container_id}", shell=True)

์œ„์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ Triton ์ถ”๋ก  ์„œ๋ฒ„์—์„œ Ultralytics YOLOv8 ๋ชจ๋ธ์„ ํšจ์œจ์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ๋”ฅ ๋Ÿฌ๋‹ ์ถ”๋ก  ์ž‘์—…์„ ์œ„ํ•œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณต์‹ Triton ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ Ultralytics ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋ฌธ์˜ํ•˜์—ฌ ์ง€์›์„ ๋ฐ›์œผ์„ธ์š”.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Ultralytics YOLOv8 NVIDIA ์ถ”๋ก  ์„œ๋ฒ„๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋‚˜์š”?Triton

์„ค์ • Ultralytics YOLOv8NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„ ์„ค์ •์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

  1. YOLOv8 ์„ ONNX ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolov8n.pt")  # load an official model
    
    # Export the model to ONNX format
    onnx_file = model.export(format="onnx", dynamic=True)
    
  2. Triton ๋ชจ๋ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

    from pathlib import Path
    
    # Define paths
    model_name = "yolo"
    triton_repo_path = Path("tmp") / "triton_repo"
    triton_model_path = triton_repo_path / model_name
    
    # Create directories
    (triton_model_path / "1").mkdir(parents=True, exist_ok=True)
    Path(onnx_file).rename(triton_model_path / "1" / "model.onnx")
    (triton_model_path / "config.pbtxt").touch()
    
  3. Triton ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    import contextlib
    import subprocess
    import time
    
    from tritonclient.http import InferenceServerClient
    
    # Define image https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver
    tag = "nvcr.io/nvidia/tritonserver:23.09-py3"
    
    subprocess.call(f"docker pull {tag}", shell=True)
    
    container_id = (
        subprocess.check_output(
            f"docker run -d --rm -v {triton_repo_path}/models -p 8000:8000 {tag} tritonserver --model-repository=/models",
            shell=True,
        )
        .decode("utf-8")
        .strip()
    )
    
    triton_client = InferenceServerClient(url="localhost:8000", verbose=False, ssl=False)
    
    for _ in range(10):
        with contextlib.suppress(Exception):
            assert triton_client.is_model_ready(model_name)
            break
        time.sleep(1)
    

์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ์„ฑ๋Šฅ AI ๋ชจ๋ธ ์ถ”๋ก ์„ ์œ„ํ•ด Triton ์ถ”๋ก  ์„œ๋ฒ„์—์„œ YOLOv8 ๋ชจ๋ธ์„ ๋Œ€๊ทœ๋ชจ๋กœ ํšจ์œจ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„์™€ ํ•จ๊ป˜ Ultralytics YOLOv8 ์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์ด์ ์ด ์žˆ๋‚˜์š”?

ํ†ตํ•ฉ Ultralytics YOLOv8NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„์™€ ํ†ตํ•ฉํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ™•์žฅ ๊ฐ€๋Šฅํ•œ AI ์ถ”๋ก : Triton ๋‹จ์ผ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์—์„œ ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์  ๋ชจ๋ธ ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋‹ค์–‘ํ•œ AI ์›Œํฌ๋กœ๋“œ์— ๋งž๊ฒŒ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  • ๊ณ ์„ฑ๋Šฅ: NVIDIA GPU์— ์ตœ์ ํ™”๋œ Triton ์ถ”๋ก  ์„œ๋ฒ„๋Š” ๊ณ ์† ์ถ”๋ก  ์ž‘์—…์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ฌผ์ฒด ๊ฐ์ง€์™€ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์•™์ƒ๋ธ” ๋ฐ ๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ: Triton ์˜ ์•™์ƒ๋ธ” ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ A/B ํ…Œ์ŠคํŠธ ๋ฐ ๋กค๋ง ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

YOLOv8 ์„ค์ • ๋ฐ ์‹คํ–‰์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ง€์นจ์€ ์„ค์ • ๊ฐ€์ด๋“œ( Triton)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Triton ์ถ”๋ก  ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— YOLOv8 ๋ชจ๋ธ์„ ONNX ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ชจ๋ธ์— ONNX (์˜คํ”ˆ ์‹ ๊ฒฝ๋ง ๊ตํ™˜) ํ˜•์‹ ์‚ฌ์šฉ Ultralytics YOLOv8NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์ƒํ˜ธ ์šด์šฉ์„ฑ: ONNX ํ˜•์‹์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋”ฅ ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ: PyTorch, TensorFlow)๊ฐ„์˜ ์ „์†ก์„ ์ง€์›ํ•˜์—ฌ ๋ณด๋‹ค ํญ๋„“์€ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ ํ™”: Triton ๋ฅผ ํฌํ•จํ•œ ๋งŽ์€ ๋ฐฐํฌ ํ™˜๊ฒฝ์ด ONNX ์— ์ตœ์ ํ™”๋˜์–ด ๋” ๋น ๋ฅธ ์ถ”๋ก ๊ณผ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ์šฉ์ด์„ฑ: ONNX ์€ ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์™€ ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ์—์„œ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ”Œ๋žซํผ ์ „๋ฐ˜์—์„œ ํญ๋„“๊ฒŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ์„ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
onnx_file = model.export(format="onnx", dynamic=True)

๋‚ด๋ณด๋‚ด๊ธฐ ๊ฐ€์ด๋“œ์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Triton ์ถ”๋ก  ์„œ๋ฒ„์—์„œ Ultralytics YOLOv8 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๋ก ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ, ์ถ”๋ก ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ultralytics YOLOv8 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๋ก ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( NVIDIA Triton ์ถ”๋ก  ์„œ๋ฒ„). Triton ๋ชจ๋ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ชจ๋ธ์„ ์„ค์ •ํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋ธ์—์„œ ์ถ”๋ก ์„ ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

from ultralytics import YOLO

# Load the Triton Server model
model = YOLO("http://localhost:8000/yolo", task="detect")

# Run inference on the server
results = model("path/to/image.jpg")

YOLOv8 ์„ ์‚ฌ์šฉํ•˜์—ฌ Triton ์„œ๋ฒ„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋Š” triton ์ถ”๋ก  ์„œ๋ฒ„ ์‹คํ–‰ํ•˜๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐฐํฌ ์‹œ Ultralytics YOLOv8 ์€ TensorFlow ๋ฐ PyTorch ๋ชจ๋ธ๊ณผ ์–ด๋–ป๊ฒŒ ๋น„๊ต๋˜๋‚˜์š”?

Ultralytics YOLOv8 ๋Š” ๋ฐฐํฌ ์‹œ TensorFlow ๋ฐ PyTorch ๋ชจ๋ธ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๊ณ ์œ ํ•œ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ: ์‹ค์‹œ๊ฐ„ ๊ฐ์ฒด ๊ฐ์ง€ ์ž‘์—…์— ์ตœ์ ํ™”๋œ YOLOv8 ์€ ์ตœ์ฒจ๋‹จ ์ •ํ™•๋„์™€ ์†๋„๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์‹ค์‹œ๊ฐ„ ๋น„๋””์˜ค ๋ถ„์„์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ํŽธ์˜์„ฑ: YOLOv8 Triton ์ถ”๋ก  ์„œ๋ฒ„์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋ฉฐ ๋‹ค์–‘ํ•œ ๋‚ด๋ณด๋‚ด๊ธฐ ํ˜•์‹(ONNX, TensorRT, CoreML)์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋‹ค์–‘ํ•œ ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ: YOLOv8 ์—๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์•ˆ์ •์ ์ธ AI ๋ฐฐํฌ์— ์ค‘์š”ํ•œ ๋™์  ๋ชจ๋ธ ๋กœ๋“œ, ๋ชจ๋ธ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์•™์ƒ๋ธ” ์ถ”๋ก ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ชจ๋ธ ๋ฐฐํฌ ๊ฐ€์ด๋“œ์—์„œ ๋ฐฐํฌ ์˜ต์…˜์„ ๋น„๊ตํ•˜์„ธ์š”.



์ƒ์„ฑ 2023-11-12, ์—…๋ฐ์ดํŠธ 2024-07-05
์ž‘์„ฑ์ž: glenn-jocher (10)

๋Œ“๊ธ€