рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде Ultralytics YOLOv8

рд╡рд╣реА Triton Inference Server (рдкреВрд░реНрд╡ рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ TensorRT рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░) рдХрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ? NVIDIA. рдпрд╣ рдПрдХ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдорд╛рди рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ NVIDIA рдЬреАрдкреАрдпреВред Triton рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдПрдЖрдИ рдореЙрдбрд▓ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХреАрдХрд░рдг Ultralytics YOLOv8 рдХреЗ рд╕рд╛рде Triton Inference Server рдЖрдкрдХреЛ рд╕реНрдХреЗрд▓реЗрдмрд▓, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдорд╛рди рд╡рд░реНрдХрд▓реЛрдб рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдПрдХреАрдХрд░рдг рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ.



рд╕рддрд░реНрдХрддрд╛: рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ NVIDIA Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ред

рдХреНрдпрд╛ рд╣реИ Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░?

Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ AI рдореЙрдбрд▓ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЧрд╣рд░реА рд╢рд┐рдХреНрд╖рд╛ рдФрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ TensorFlow, PyTorch, ONNX рд░рдирдЯрд╛рдЗрдо, рдФрд░ рдХрдИ рдЕрдиреНрдпред рдЗрд╕рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ:

  • рдПрдХрд▓ рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХрдИ рдореЙрдбрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ред
  • рд╕рд░реНрд╡рд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдЧрддрд┐рд╢реАрд▓ рдореЙрдбрд▓ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЕрдирд▓реЛрдбрд┐рдВрдЧред
  • рдЕрдиреБрдорд╛рди, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдореЙрдбрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • A/B рдкрд░реАрдХреНрд╖рдг рдФрд░ рд░реЛрд▓рд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рд╕рдВрд╕реНрдХрд░рдгред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рд╣реИрдВ:

  • рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
  • рдкрджрд╛рд╕реАрди рдХрд░рдирд╛ tritonclient:
    pip install tritonclient[all]
    

рдирд┐рд░реНрдпрд╛рдд YOLOv8 рддрдХ ONNX рдкреНрд░рд╛рд░реВрдк

рдореЙрдбрд▓ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Triton, рдЗрд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ONNX рдкреНрд░рд╛рд░реВрдкред ONNX (рдУрдкрди рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ) рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ 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 рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░

рдЪрд▓рд╛рдПрдБ 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)

рдЙрдкрд░реЛрдХреНрдд рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ, рдЖрдк рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ Ultralytics YOLOv8 рдореЙрдбрд▓ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЪрд╛рд▓реВ Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░, рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдФрд░ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЖрдкрдХреЗ рдФрд░ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рджреЗрдЦреЗрдВ рдЕрдлрд╝рд╕рд░ Triton рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдпрд╛ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ Ultralytics рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕рдореБрджрд╛рдпред

рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди

рдореИрдВ рдХреИрд╕реЗ рд╕реЗрдЯ рдЕрдк рдХрд░реВрдБ Ultralytics YOLOv8 рдХреЗ рд╕рд╛рде NVIDIA Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░?

рд╕реНрдерд╛рдкрдирд╛ Ultralytics YOLOv8 рдХреЗ рд╕рд╛рде NVIDIA 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)
    

рдпрд╣ рд╕реЗрдЯрдЕрдк рдЖрдкрдХреЛ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ YOLOv8 рдкреИрдорд╛рдиреЗ рдкрд░ рдореЙрдбрд▓ Triton рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдПрдЖрдИ рдореЙрдбрд▓ рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ред

рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ Ultralytics YOLOv8 рдХреЗ рд╕рд╛рде NVIDIA Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдкреНрд░рд╕реНрддрд╛рд╡?

рдПрдХреАрдХрд░рдг Ultralytics YOLOv8 рдХреЗ рд╕рд╛рде NVIDIA Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдХрдИ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рд╕реНрдХреЗрд▓реЗрдмрд▓ AI рдЕрдиреБрдорд╛рди: Triton рдПрдХ рдПрдХрд▓ рд╕рд░реНрд╡рд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХрдИ рдореЙрдбрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЧрддрд┐рд╢реАрд▓ рдореЙрдбрд▓ рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╡рд┐рд╡рд┐рдз рдПрдЖрдИ рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди: рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд NVIDIA рдЬреАрдкреАрдпреВ, Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдЙрдЪреНрдЪ рдЧрддрд┐ рдЕрдиреБрдорд╛рди рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдЬреИрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред
  • рдкрд╣рдирд╛рд╡рд╛ рдФрд░ рдореЙрдбрд▓ рд╕рдВрд╕реНрдХрд░рдг: Tritonрдкрд╣рдирд╛рд╡рд╛ рдореЛрдб рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдореЙрдбрд▓ рд╕рдВрд╕реНрдХрд░рдг A/B рдкрд░реАрдХреНрд╖рдг рдФрд░ рд░реЛрд▓рд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП YOLOv8 рдХреЗ рд╕рд╛рде Triton, рдЖрдк рд╕реЗрдЯрдЕрдк рдЧрд╛рдЗрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЕрдкрдирд╛ рдирд┐рд░реНрдпрд╛рдд рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП YOLOv8 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ ONNX рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░реВрдк Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░?

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ONNX (рдУрдкрди рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ) рдЖрдкрдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк Ultralytics YOLOv8 рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбрд▓ NVIDIA Triton Inference Server рдХрдИ рдкреНрд░рдореБрдЦ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  • рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА: ONNX рдкреНрд░рд╛рд░реВрдк рд╡рд┐рднрд┐рдиреНрди рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ PyTorch, TensorFlow), рд╡реНрдпрд╛рдкрдХ рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ред
  • рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди: рдХрдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рд╡реЗрд╢, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ Triton, рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ ONNX, рддреЗрдЬреА рд╕реЗ рдЕрдиреБрдорд╛рди рдФрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ред
  • рддреИрдирд╛рддреА рдореЗрдВ рдЖрд╕рд╛рдиреА: ONNX рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реБрдП, рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИред

рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

from ultralytics import YOLO

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

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдирд┐рд░реНрдпрд╛рдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдП рдЧрдП рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдореИрдВ Ultralytics YOLOv8 рдореЙрдбрд▓ рдСрди Triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░?

рд╣рд╛рдВ, рдЖрдк 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")

рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рди рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП Triton рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде YOLOv8, рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ рднрд╛рдЧрдирд╛ triton рдЕрдиреБрдорд╛рди рд╕рд░реНрд╡рд░ рдЕрдиреБрднрд╛рдЧред

рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ Ultralytics YOLOv8 рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВ TensorFlow рдФрд░ PyTorch рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓?

Ultralytics YOLOv8 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЕрджреНрд╡рд┐рддреАрдп рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ TensorFlow рдФрд░ PyTorch рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓:

  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рджрд░реНрд╢рди: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╡рд╕реНрддреБ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд, YOLOv8 рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рд╕рдЯреАрдХрддрд╛ рдФрд░ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЗрд╡ рд╡реАрдбрд┐рдпреЛ рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдмрдирд╛рддрд╛ рд╣реИред
  • рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА: YOLOv8 рдХреЗ рд╕рд╛рде рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ Triton Inference Server рдФрд░ рд╡рд┐рд╡рд┐рдз рдирд┐рд░реНрдпрд╛рдд рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (ONNX, TensorRT, CoreML), рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИред
  • рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ: YOLOv8 рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЙрдбрд▓ рд▓реЛрдбрд┐рдВрдЧ, рдореЙрдбрд▓ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдФрд░ рдПрдирд╕реЗрдВрдмрд▓ рдЗрдирдлрд░реЗрдВрд╕ рдЬреИрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдПрдЖрдИ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ.



рдмрдирд╛рдпрд╛ рдЧрдпрд╛ 2023-11-12, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-07-05
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (10)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ