서비스 관리 및 크기 조정¶
모델이 Snowpark Container Services(SPCS)에 배포된 경우 수명 주기, 리소스 사용량, 안정성을 관리해야 합니다. 이 페이지에서는 프로덕션 워크로드에 대한 표준 작업, 가시성, 고가용성 구성에 대해 설명합니다.
서비스 관리하기¶
Snowpark Container Services는 서비스 관리를 위한 SQL 인터페이스를 제공합니다. 다른 SPCS 서비스를 관리할 때와 마찬가지로 Snowflake Model Serving에서 생성한 SPCS 서비스에도 DESCRIBE SERVICE 및 ALTER SERVICE 명령을 사용할 수 있습니다. 예를 들어 다음을 할 수 있습니다.
서비스의 MIN_INSTANCES 및 기타 속성 변경하기
서비스 삭제
다른 계정에 서비스 공유
서비스 소유권 변경(새 소유자가 모델 READ 액세스 권한을 보유하고 있어야 함)
참고
서비스 소유자가 어떤 이유로든 기본 모델에 대한 액세스 권한을 상실하면 다시 시작한 후 서비스가 작동을 멈춥니다. 작동 멈춤은 다시 시작할 때까지 계속 유지됩니다.
재현성과 디버깅 가능성을 보장하기 위해 기존 추론 서비스의 사양을 변경할 수 없습니다. 하지만 사용자는 사양을 복사하고 사용자 지정한 다음, 사용자 지정 사양을 사용하여 모델을 호스팅하는 자체 서비스를 생성할 수 있습니다. 하지만 이를 통해 기본 모델이 삭제되는 것을 방지할 수는 없습니다. 또한 계보 를 추적하지 않습니다. 하지만 사용자는 사양을 복사하고 사용자 지정한 다음, 사용자 지정 사양을 사용하여 모델을 호스팅하는 자체 서비스를 생성할 수 있습니다. 하지만 이를 통해 기본 모델이 삭제되는 것을 방지할 수는 없습니다. 또한, 계보를 추적하지 않습니다. Snowflake Model Serving이 서비스를 생성하도록 허용하는 것이 가장 좋습니다.
서비스 확장하기¶
참고
snowflake-ml-python 1.25.0부터, create_service 메서드 내에서 min_instances 및 max_instances를 설정하여 추론 서비스의 크기 조정 경계를 정의할 수 있습니다.
자동 크기 조정의 작동 방식¶
서비스는 min_instances에 지정된 노드 수로 초기화되며 실시간 트래픽 볼륨과 하드웨어 사용률을 기반으로 정의된 범위 내에서 동적으로 조정됩니다.
0으로 조정(자동 일시 중단): min_instances가 0(기본값)으로 설정된 경우 30분 동안 트래픽이 감지되지 않으면 서비스가 자동으로 일시 중단됩니다.
크기 조정 대기 시간: 크기 조정 트리거는 일반적으로 필수 조건을 충족한 후 1분 후에 활성화됩니다. 총 가동 시간에는 이 트리거 기간과 새 서비스 인스턴스를 프로비저닝하고 초기화하는 데 필요한 시간이 포함됩니다.
구성 모범 사례¶
매개 변수 |
권장 전략 |
|---|---|
min_instances |
즉각적인 가용성을 보장하고 콜드 스타트 지연을 방지하려면 프로덕션 워크로드를 1 이상으로 설정합니다. |
max_instances |
리소스 사용량 및 비용에 대한 상한을 유지하면서 피크 수요를 수용하도록 설정합니다. |
서비스 일시 중단¶
기본값을 min_instances=0으로 설정하는 경우 30분 동안 활동이 없으면 서비스가 자동으로 일시 중단됩니다. 수신 요청은 재개를 트리거하며, 총 지연은 컴퓨팅 풀 가용성과 모델의 로딩 시간(시작 지연)에 따라 결정됩니다.
서비스를 수동으로 일시 중단하거나 재개하려면 ALTER SERVICE 명령을 사용하세요.
ALTER SERVICE my_service [ SUSPEND | RESUME ];
모델 삭제하기¶
서비스에서 사용 중인 모델 또는 모델 버전(실행 중 또는 일시 중단)은 삭제할 수 없다는 제한이 있지만, SQL 인터페이스 또는 Python API를 사용하여 평소와 같이 모델 및 모델 버전을 관리할 수 있습니다. 모델이나 모델 버전을 삭제하려면 먼저 서비스를 삭제하십시오.
서비스 모니터링하기¶
Snowpark Container Services에서 모델을 실행할 때 컨테이너 로그 및 메트릭에 액세스하여 서비스 상태를 모니터링하고 문제를 해결할 수 있습니다. 모델 제공 서비스는 서비스 동작을 이해하고, 오류를 진단하고, 성능을 최적화하는 데 도움이 될 수 있는 로그를 생성합니다.
메트릭 및 로그 액세스를 포함한 SPCS 서비스 모니터링에 대한 포괄적인 정보는 :doc:`서비스 모니터링 </developer-guide/snowpark-container-services/monitoring-services>`을 참조하세요.
Snowsight에서¶
Snowsight에서 모델 제공 서비스를 모니터링할 수 있습니다.
탐색 메뉴에서 **모니터링 » 서비스 및 작업**을 선택합니다.
서비스 탭에서 서비스를 선택하여 서비스 세부 정보 페이지를 확인합니다.
개요 탭에는 컴퓨팅 풀, 엔드포인트, 인스턴스 수를 포함한 서비스 정보가 표시됩니다.
로그, 메트릭, 이벤트 탭에서는 로그, 성능 메트릭, 서비스 이벤트(예: 인스턴스 프로비저닝 및 종료)를 제공합니다. 필요에 따라 인스턴스 및 컨테이너 이름별로 결과를 필터링합니다.
서비스 로그에 액세스하기¶
다음 방법 중 하나를 사용하여 서비스를 제공하는 모델에 대한 로그에 액세스할 수 있습니다.
서비스 도우미 함수 사용하기¶
모델 제공에는 실행 중이거나 일시 중단된 서비스에 대해 이벤트 테이블에서 로그를 검색하는 기본 제공 도우미 함수가 포함되어 있습니다.
-- Retrieve logs using the service helper function
SELECT * FROM TABLE(mydb.myschema.my_model_service!SPCS_GET_LOGS())
WHERE
timestamp > dateadd(hour, -1, current_timestamp())
AND instance_id = 0 -- choose all instances or one particular
AND container_name = 'model-inference';
이벤트 테이블 직접 쿼리하기¶
계정에 대해 구성된 이벤트 테이블이 있는 경우 이를 직접 쿼리하여 서비스 로그를 검색할 수 있습니다.
-- Find the event table for your account
SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
-- Query the event table for model service logs
SELECT TIMESTAMP, RESOURCE_ATTRIBUTES, RECORD_ATTRIBUTES, VALUE
FROM <current_event_table_for_your_account>
WHERE timestamp > dateadd(hour, -1, current_timestamp())
AND RESOURCE_ATTRIBUTES:"snow.service.name" = '<model_service_name>'
AND RECORD_TYPE = 'LOG'
AND RESOURCE_ATTRIBUTES:"snow.service.container.instance" = '0' -- choose all instances or one particular
AND RESOURCE_ATTRIBUTES:"snow.service.container.name" = 'model-inference'
ORDER BY timestamp DESC
LIMIT 10;
시스템 함수 사용하기(실행 중인 인스턴스만 해당)¶
활성 컨테이너의 실시간 디버깅을 위해 SYSTEM$GET_SERVICE_LOGS 함수를 사용할 수 있습니다.
-- Retrieve logs from a specific service instance
SELECT SYSTEM$GET_SERVICE_LOGS('model_service_name', '0', 'model-inference', 10);
참고
모델 추론 서비스의 컨테이너 이름은 model-inference 입니다. 이미지 빌드 문제를 해결하려면 model-build 를 컨테이너 이름으로 사용합니다.
서비스 메트릭에 액세스하기¶
모델 제공 서비스는 리소스 사용률, 요청 속도, 대기 시간 및 기타 작업 특성을 모니터링하는 데 도움이 되는 성능 및 상태 메트릭을 내보냅니다. 이러한 메트릭은 이벤트 테이블에 캡처되며 시간 경과에 따른 서비스 성능을 분석하기 위해 쿼리할 수 있습니다.
SPCS 서비스 메트릭에 대한 자세한 내용은 :doc:`이벤트 테이블 메트릭에 액세스하기 </developer-guide/snowpark-container-services/monitoring-services>`를 참조하세요.
서비스 도우미 함수 사용하기¶
모델 제공 서비스에는 실행 중이거나 일시 중단된 서비스에 대해 이벤트 테이블에서 메트릭을 검색하는 기본 제공 도우미 함수가 포함되어 있습니다.
-- Retrieve metrics using the service helper function
SELECT *
FROM TABLE(mydb.myschema.my_model_service!SPCS_GET_METRICS())
WHERE
timestamp > dateadd(hour, -1, current_timestamp())
AND instance_id = 0 -- choose all instances or one particular
AND container_name = 'model-inference';
이벤트 테이블 직접 쿼리하기¶
이벤트 테이블을 직접 쿼리하여 특정 메트릭을 검색하고 필터링할 수 있습니다.
-- Find the event table for your account
SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
-- Query the event table for model service metrics
SELECT
timestamp,
RESOURCE_ATTRIBUTES:"snow.service.container.instance" as instance,
RESOURCE_ATTRIBUTES:"snow.service.container.name" as container,
RECORD:metric:"name" as metric,
value
FROM my_event_table_db.my_event_table_schema.my_event_table
WHERE timestamp > DATEADD(hour, -1, CURRENT_TIMESTAMP())
AND RESOURCE_ATTRIBUTES:"snow.service.name" = '<model_service_name>'
AND RECORD_TYPE = 'METRIC'
AND RESOURCE_ATTRIBUTES:"snow.service.container.instance" = '0' -- choose all instances or one particular
AND RESOURCE_ATTRIBUTES:"snow.service.container.name" = 'model-inference'
ORDER BY timestamp DESC
LIMIT 100;
내결함성¶
분산 시스템에서는 오류가 발생합니다. 미션 크리티컬 워크로드의 경우 노드 및 영역 장애에 대한 복원력을 갖추도록 서비스를 구성하는 것은 사용자의 책임입니다.
노드 장애 복원력¶
표준 노드 장애를 처리하기 위해 Snowflake는 50%를 초과하는 프로비저닝 또는 최소 3개의 인스턴스(둘 중 더 높은 값)를 유지하는 것을 권장합니다.
예: 최대 트래픽을 지원하기 위해 4개의 인스턴스가 필요한 경우 6개의 인스턴스를 프로비저닝해야 합니다.
영역 장애 복원력¶
전체 영역 장애에 대한 복원력이 필요한 미션 크리티컬 워크로드의 경우 서비스 </sql-reference/sql/create-service>`를 생성할 때 분산 :doc:`컴퓨팅 풀 </sql-reference/sql/create-compute-pool>`을 사용할 수 잇습니다. 분산 컴퓨팅 풀은 PLACEMENT_GROUP 매개 변수를 DISTRIBUTED로 설정하여 생성됩니다. 분산 컴퓨팅 풀에 대한 자세한 내용은 :ref:`label-SPCS_working_with_compute_pool_placement_group 섹션을 참조하세요.
구성 가이드¶
기존 풀 변환¶
경고
활성 풀에서는 이 설정을 변경할 수 없습니다. 먼저 일시 중단해야 합니다.
ALTER COMPUTE POOL my_pool SUSPEND;
ALTER COMPUTE POOL my_pool
SET PLACEMENT_GROUP = 'DISTRIBUTED';
ALTER COMPUTE POOL my_pool RESUME;
기존 풀 되돌리기¶
경고
활성 풀에서는 이 설정을 변경할 수 없습니다. 먼저 일시 중단해야 합니다.
ALTER COMPUTE POOL my_pool SUSPEND;
ALTER COMPUTE POOL my_pool
UNSET PLACEMENT_GROUP;
ALTER COMPUTE POOL my_pool RESUME;
검증¶
풀이 HA에 제대로 구성되었는지 확인하려면 placement_group 열을 확인합니다.
DESCRIBE COMPUTE POOL my_service_pool;