IBM Cloud Pak for Data 의 서비스 아키텍처
IBM Cloud Pak for Data
IBM Cloud Pak® for Data 에서 서비스를 구성하는 구성 요소에 대해 알아보고, 서비스에서 데이터가 어떻게 흐르는지 알아보세요.
서비스는 다음 유형의 자원으로 구성됩니다.
이 서비스는 다음 패턴을 사용하여 자원의 정보를 전달하고 통신합니다
- REST API: 보안 HTTP를 통해 REST(Representational State Transfer) API 호출을 전송합니다.
- gRPC: 서비스가 로컬 오브젝트인 것처럼 클러스터의 다른 시스템에서 실행 중인 리소스를 호출할 수 있도록 하는 오픈 소스 원격 프로시저 호출(RPC) 프레임워크를 사용하여 메소드 호출을 수행합니다. 더 많은 정보를 원하시면, gRPC 참고하세요.
- LiteLinks: IBM에서 개발한 LiteLinks 프로토콜을 사용합니다. LiteLinks에는 기본 Apache Thrift 기반 원격 프로시저 호출(RPC) 프레임워크에 대한 랩퍼 역할을 하는 사용자 정의 서비스 검색 계층이 있습니다.
다음 다이어그램은 서비스에서 사용되는 컴포넌트를 보여줍니다.
{caption="Service components" caption-side="bottom"}
다음 섹션은 시스템에서 사용되는 각 리소스에 대한 세부사항을 제공합니다. 목표는 초기 리소스 계획을 수행하고 시간 경과에 따른 데이터 요구사항의 변경사항을 관리하는 데 도움이 될 수 있는 정보를 제공하는 것입니다.
마이크로서비스
이 서비스는 다음과 같은 상태 비저장 마이크로서비스로 구성되어 있습니다
-
분석: 어시스턴트와 고객 간에 발생하는 대화를 로그합니다. 이러한 사용자 대화 로그는 제품의 분석 페이지 및
/logs
API 엔드포인트에서 사용할 수 있습니다. 1.5.0 릴리스에서 도입되었습니다. 분석 기능은 Red Hat OpenShift 4.5 이상에서만 지원되는 마이크로서비스에 의존합니다. -
CLU: NLU(Natural Language Understanding)라고도 하는 Conversational Language Understanding 인터페이스는 언어 이해 파이프라인에 대한 시작점으로 텍스트를 분석하여 인텐트 및 엔티티 멘션을 찾습니다. Store 마이크로서비스는 LiteLinks 프로토콜을 사용하여 기계 학습 훈련을 시작하기 위해 이 마이크로서비스를 호출합니다. NLU 마이크로서비스는 기계 학습 모델의 라이프사이클을 제어합니다. 이 작업은 스토어 마이크로서비스가 사용하는 작업공간 ID를 파이프라인의 내부 ID를 이해하는 기계 언어에 매핑합니다. NLU 마이크로서비스는 기계 학습 모델에 대한 훈련 데이터를 MinIO 오브젝트 스토리지에 업로드합니다. 인텐트가 편집된 후와 같이 언어 모델이 훈련되어야 하는 경우 NLU 마이크로서비스가 Master 마이크로서비스를 호출합니다. 업데이트된 모델이 사용 가능하면 NLU가 TAS 마이크로서비스를 호출하여 고객이 제공한 사용자 입력을 분석합니다. 작업공간 ID는 UUID 형식입니다. 언어 이해 파이프라인에 있는 모델의 내부 ID는 일반적으로 정규 표현식 패턴인
vn-[0-9a-f]*-[0-9a-f]*
을 따릅니다. -
CLU Embedding: 언어 이해 파이프라인의 다른 마이크로서비스에 대한 단어 임베딩을 제공합니다. TAS, ED-MM 및 훈련 팟(Pod)에서는 gRPC 프로토콜을 사용하여 CLU Embedding 마이크로서비스를 호출합니다.
-
Dialog: 사용자 입력에 대한 응답을 생성하기 위해 대화 스킬에 정의된 대화 트리를 처리합니다. 이 서비스는 컨텍스트(이전 대화 턴에서 전달된 변수)와 사용자 입력에서 인식된 인텐트 및 엔티티를 기반으로 스킬의 대화 트리를 따라 적절한 응답을 찾습니다. 또한 대화는 다른 서비스 또는 프로그램에 대한 프로그램 방식의 콜아웃 수행을 담당합니다. 대화 런타임이라고도 하는 이 마이크로서비스는 Store 마이크로서비스에서 호출되는 LiteLinks 서버입니다. 대화 스킬을 위한 인메모리 캐시가 있으며, 대화 스킬을 위한 캐시로 Redis 를 사용합니다.
-
ED-MM: 사용자 입력에서 컨텍스트 엔티티를 인식합니다. 이 마이크로서비스는 언어 이해 파이프라인의 일부입니다. ED-MM은 Entities Distro model mesh의 약어입니다. 이 서비스의 ED-MM 마이크로서비스 구현은 모델-메쉬 패턴을 기반으로 합니다. (자세한 정보는 모델 메시를 참조하십시오.) ED-MM 마이크로서비스는 TAS 마이크로서비스에서 호출되어 처리되는 대화 스킬의 훈련 데이터에 컨텍스트 엔티티가 있는 경우에만 사용자 입력을 평가합니다. 컨텍스트 엔티티는 컨텍스트에 바인딩됩니다. ED-MM 마이크로서비스는 MinIO 에서 모델을 로드합니다. 런타임 시 모델이 엔티티를 검색하고 컨텍스트의 유효성을 검증하는 데 사용됩니다. ED-MM 마이크로서비스는 또한 단어 임베딩을 위해 CLU Embedding 서비스에 액세스합니다.
-
Gateway: IBM Cloud Pak for Data API와 상호 작용하고 공개 IBM Cloud 의 동작을 모방하는 적응 레이어입니다. 해당 팟(Pod)의 이름은
${release-name}-addon-assistant-gw-deployment
입니다.${release-name} 은 (는)
watson-assistant
입니다.이 마이크로서비스는 다음 기능을 제공합니다.
- IBM Cloud Pak for Data에 서비스 설치를 등록합니다.
- API 요청의 경우 Store 마이크로서비스에 필요한 인증 데이터를 추가합니다.
- 서비스 인스턴스가 작성되거나 삭제될 때 Store 마이크로서비스에 알립니다.
- 사용자가 웹 UI에서 인스턴스 세부사항을 요청할 때 UI 마이크로서비스가 정보를 리턴할 수 있도록 IBM Cloud 인터페이스를 가장합니다.
API 요청이 들어오면 먼저 IBM Cloud Pak for Data ingress nginx 서버에서 처리됩니다. nginx 서버는 Gateway 마이크로서비스를 호출하여 권한을 확인하고 요청에 대한 인증 데이터를 얻도록 구성됩니다. nginx 서버가 원래 요청에 헤더를 추가한 후 Store 마이크로서비스를 호출합니다. 그러나 초기 단계는 로그를 생성하지 않습니다. 수신 API 요청의 첫 번째 로그를 보려면 Store 마이크로서비스의 로그를 확인하십시오.
-
통합: 웹 대화 및 미리보기 링크와 같은 기본 제공 통합을 지원하는 서비스입니다. 1.5.0 릴리스에서 도입되었습니다.
-
Master: 기반 인텐트 및 엔티티 모델의 라이프사이클을 제어합니다. 이 마이크로서비스는 언어 이해 파이프라인의 일부입니다. NLU 마이크로서비스는 LiteLinks를 사용하여 새 모델이 훈련되도록 요청을 Master 마이크로서비스에 전송합니다. 이 유형의 요청은 대화 스킬이 작성되거나 기존 대화 스킬이 업데이트될 때 발생합니다. 모델이 훈련된 후 모델을 로드하기 위해 TAS 마이크로서비스가 호출됩니다.
-
숫자 체계 엔티티: 시스템 엔티티(
@sys-date
,@sys-number
등)가 사용하는 숫자 값 인식을 관리합니다. 1.5.0 릴리스에서 도입되었습니다. -
Recommends: 디렉토리 기반 엔티티 동의어 및 인텐트 충돌과 같은, Watson으로부터의 권장사항을 지원합니다. 웹 UI에서 작성 시에만 사용됩니다. 예를 들어, 사용자가 엔티티에 대한 동의어 추천을 요청하면 UI 마이크로서비스가 Store 마이크로서비스를 호출합니다. Store 마이크로서비스가 요청을 Recommends 마이크로서비스에 전달합니다. Recommends 마이크로서비스가 MongoDB에 저장된 임베딩을 사용하여 현재 단어의 동의어를 검색하고 이를 Redis 캐시에 저장합니다. 이 마이크로서비스는 동의어 목록이 포함된 응답을 Store 마이크로서비스에 전송합니다. 유사한 워크플로우가 대화 스킬에서 인텐트 충돌을 식별하는 데 사용됩니다.
-
Skill-search: 동일한 클러스터에서 사용으로 설정된 Discovery 서비스에 대한 API 호출을 관리합니다. v2
/message
API 호출이 Store 마이크로서비스에 도달하면 Store가 Redis에서 세션 상태 정보를 검색한 후 스킬 처리를 시작합니다. 처리되는 어시스턴트에 검색 스킬이 있으면 Store 마이크로서비스가 HTTPS REST를 통해 이 마이크로서비스를 호출합니다. 이 마이크로서비스는 Discovery 인스턴스를 쿼리하고 Discovery 에서 반환된 출력을 v2/message
API 스키마로 변환합니다. -
Spellchecker:
/message
요청으로 제출된 사용자 입력에서 발생한 맞춤법 오류를 수정합니다. 이 자동 정정 기능은 영어 대화 스킬에 대해 자동으로 사용으로 설정되며, 프랑스어 스킬에 대해 켤 수 있습니다. 이 마이크로서비스는 어휘 및 일반 언어 모델에서 편집 거리 등의 정정 기법을 사용하여 기본 맞춤법 검사 기능을 제공합니다. 이 기능이 활성화되어 있는 경우, TAS 마이크로서비스는 사용자 입력의 의도와 실체를 인식하기 전에 gRPC 를 사용하여 맞춤법 검사기를 호출합니다. 맞춤법 검사기는 데이터 저장소에 의존하지 않으며 다른 마이크로 서비스를 호출하지 않습니다. -
Store: 모든 어시스턴트 API 호출을 처리합니다. 이 마이크로서비스는 요청 자체를 처리하거나 요청 처리에 필요한 다른 마이크로서비스를 호출합니다. 예를 들어, 고객이 사용자 입력을 v1
/message
API 호출과 함께 제출하면, 요청은 스토어로 전송되어 처리됩니다. stateful v2/message
API 호출의 경우 Store는 먼저 Redis에서 세션 상태 정보를 검색합니다. 그런 다음 NLU 마이크로서비스를 호출하여 사용자 입력을 분석하고 입력에서 인텐트 및 엔티티 참조를 식별합니다. 그런 다음 Store에서 Dialog 마이크서비스를 호출하여 고객에게 리턴할 적절한 응답을 생성합니다. Store 마이크로서비스는 어시스턴트, 스킬 및 작업공간 정의를 PostgreSQL 데이터베이스에 저장합니다. Store 마이크로서비스는 세션(v2 API)의 상태를 Redis 데이터 저장소에 저장합니다. -
TAS: 모델 추론을 수행합니다. 즉, 사용자 입력에서 가장 일치하는 의도와 엔티티를 식별합니다. TAS는 Train and Serve의 약어이지만 주로 기존 모델을 제공합니다. TAS 마이크로서비스는 MinIO 스토리지의 모델을 메모리에 로드하고 모델을 실행하여 인텐트를 찾습니다. TAS 마이크로서비스는 LiteLinks를 사용하여 NLU 마이크로서비스에서 호출됩니다. TAS 및 ED-MM 마이크로서비스는 모델-메시 패턴을 기반으로 합니다. (자세한 정보는 모델 메시를 참조하십시오.) 필요한 경우 TAS는 언어 이해 파이프라인에서 다른 마이크로서비스를 호출합니다. 특히 토큰화를 위해 SireG를 호출하고 컨텍스트 엔티티를 위해 ED-MM을 호출(gRPC 사용)하며 맞춤법 오류를 정정하기 위해 Spellcheck를 호출합니다. 의도 인식의 경우, TAS 마이크로서비스는 단어 임베딩 데이터를 필요로 하는데, 이 데이터는 CLU 임베딩 마이크로서비스가 제공합니다.
-
TF-MM: 텐서 플로우 모델 메시 마이크로서비스는 범용 문장 인코더 및 자동 인코더 모델을 관리하여 주제를 벗어난 관련 없는 인텐트 인식을 개선합니다. 1.5.0 릴리스에서 도입되었습니다.
-
UI: 가상 어시스턴트 빌더가 스킬 및 어시스턴트를 작성하는 데 사용하는 웹 애플리케이션입니다.
데이터 소스
마이크로서비스는 다음 자원을 사용합니다:
-
Elastic: 탄력적 데이터 저장소는 고객 메시지를 저장합니다. 이 사용자 대화 기록은 분석 페이지에서 검토하거나
/logs
API 엔드포인트에서 검색할 수 있습니다. 1.5.0 릴리스에서 도입되었습니다. -
Etcd: 인기 있는 분산 키-값 스토리지 솔루션입니다. Ectd는 Litelinks 클라이언트 및 서버(Store, Dialog, NLU, Master, TAS, ED-MM)에서 서비스 검색에 사용되며 언어 이해 파이프라인의 마이크로서비스(NLU, Master, TAS, ED-MM)에서 메타데이터를 저장하는 데 사용됩니다. 자세한 정보는 Etcd 저장소를 참조하십시오.
-
Kafka: 수신 고객 메시지에 대한 큐잉 시스템입니다. 1.5.0 릴리스에서 도입되었습니다.
-
PostgreSQL: 인기 있는 관계형 데이터베이스입니다. 이 데이터베이스는 Store 마이크로서비스에서만 사용되며 작업공간, 스킬 및 어시스턴트에 대한 기본 저장소입니다. PostgreSQL과 관련된 배치 및 팟(Pod) 이름 앞에는
${release-name}-store-postgres
가 붙습니다. 자세한 정보는 PostgreSQL 데이터 저장소를 참조하십시오. -
Multicloud Object Gateway: Multicloud Object Gateway는 Amazon S3 API를 구현하는 오브젝트 스토리지 서비스입니다. 언어 이해 파이프라인 마이크로서비스(clu-controller, clu-serving, clu-training, tf-mm, ed-mm, 그리고 dragonfly)가 의도 및 실체 분류를 위해 훈련된 모델을 저장하고 로드하는 데 사용됩니다. 이는 작성 및 런타임 서비스 (상점) 에서 기술의 버전화된 데이터를 저장하는 데 사용되며 작성 경험을 위한 비동기 업로드를 위한 임시 스토리지로도 사용됩니다. Watson Assistant에서 Multicloud Object Gateway는 Cloud Object Storage라고도 합니다. 자세한 정보는 Multicloud Object Gateway 를 참조하십시오.
-
Redis: 흔히 세션 상태를 캐싱하거나 공유하는 데 사용되는 인메모리 데이터 저장소입니다. Redis 는 Store 마이크로서비스에서 어시스턴트의 현재 대화 상태를 저장하는 데 사용됩니다. UI 마이크로서비스가 Redis에 세션 상태를 저장합니다. Recommends 및 Dialog 마이크로서비스는 Redis 인스턴스를 캐시로 사용합니다.
1.5.0: 다음 데이터 소스는 1.5.0 릴리스부터 더 이상 사용되지 않습니다.
-
MongoDB: 문서 지향 데이터베이스입니다. Mongo는 Recommends 마이크로서비스에서 동의어 추천에 사용하는 임베딩 및 기타 데이터를 저장하기 위한 읽기 전용 모드입니다.
MongoDB는 문서 기반 분산 데이터베이스입니다. MongoDB 데이터베이스에는 세 개의 팟(Pod)이 있습니다. 이 데이터베이스는 replicaSet 모드에서 실행됩니다. 즉, 하나의 팟(Pod)은 코디네이터 역할에서 읽기/쓰기 모드로 실행되며 나머지 팟(Pod)은 보조 역할로 실행되고 읽기 전용입니다. 코디네이터 팟(Pod)의 변경사항이 보조 팟(Pod)으로 복제됩니다. 서비스 설치 중에 Kubernetes 작업이 데이터를 Mongo 데이터베이스로 로드합니다. 서비스가 설치된 후에는 Mongo 데이터베이스에 데이터가 기록되지 않습니다. Recommends 마이크로서비스만 Mongo에서 데이터를 읽어들입니다. 작성 시 Recommends 팟(Pod)은 Mongo가 실행 중인지 확인하고 Mongo 데이터베이스에 필수 데이터가 로드될 때까지 대기합니다.
Recommends 데이터를 Mongo 데이터베이스로 로드하는 프로세스는 설치의 일부로 발생하며 30분 이상이 걸릴 수 있습니다.
- mongoDB 팟(Pod) 이름은
${release-name}-ibm-mongodb-server-[0-9]*
규칙을 따릅니다. 더 긴 릴리스 이름의 경우 이름이${release-name prefix}-[a-f0-9]{4}-336f-server-*
로 단축됩니다. - 서비스 설치 과정에서 실행되는 ' Kubernetes ' 작업의 이름은 '
${release-name}-recommends-load-mongo
'입니다.
${release-name} 은 (는)
watson-assistant
입니다. - mongoDB 팟(Pod) 이름은
4.7.04.7.0 부터 다음 데이터 소스는 더 이상 사용되지 않습니다
- MinIO: MinIO는 Amazon S3 API를 구현하는 오브젝트 스토리지 서비스입니다. 이는 언어 이해 파이프라인 마이크로서비스(NLU, Master, TAS, ED-MM 및 훈련 팟(Pod))에서 인텐트 및 엔티티 분류를 위해 훈련된 모델을 저장하고 로드하는 데 사용됩니다. 데이터는
nlclassifier-icp
버킷에 저장됩니다. Watson Assistant에서는 MinIO를 Cloud Object Storage를 나타내는COS
라고도 합니다. 자세한 정보는 MinIO를 참조하십시오.
아키텍처 변경사항
-
1.5.0: 이 릴리스에서 아키텍처와 관련하여 변경된 사항은 다음과 같습니다.
- 분석, 통합 및 숫자 시스템 엔티티 마이크로서비스가 도입되었습니다.
- 탄력적 검색 및 Kafka 데이터 소스가 도입되었습니다. MongoDB 데이터 소스가 제거되었습니다.
-
4.7.0: 이번 릴리스에서는 다음과 같은 구조 변경이 이루어졌습니다
- Multicloud Object Gateway 가 도입되었습니다. MinIO 데이터 소스 및 SIREG 마이크로서비스가 제거되었습니다.
훈련 컴포넌트
새로운 모델을 훈련하는 것은 한 번만 수행하면 되는 단기적인 작업이고, 많은 자원을 필요로 하는 활동입니다. 모델은 요청 시 작성되는 팟(Pod)에서 훈련됩니다. 훈련이 완료된 후 동일한 팟(Pod)이 제거됩니다. 훈련 구성 요소는 일시적인 특성 때문에 표준 마이크로서비스로 간주되지 않습니다. 구성 요소인 훈련 포드는 모델이 훈련되어야 할 때만 사용됩니다. 인텐트 사용자 예제가 대화 스킬에 추가되거나 변경될 때마다 훈련이 시작됩니다.
새 기계 학습 모델이 훈련되어야 할 때 CLU 마이크로서비스가 Master 마이크로서비스에 알립니다. Master 마이크로서비스가 동적으로 훈련 팟(Pod)을 작성합니다. 훈련 실행이 실패하는 경우 훈련 팟(Pod) 제거 및 재훈련을 처리합니다. 또한 모델이 삭제될 경우, MinIO 에서 해당 모델을 제거하는 역할도 담당합니다. 시스템에서 MinIO 스토리지에 저장된 플래그를 기반으로 훈련 실행이 완료되었는지 여부를 판별합니다. Master 마이크로서비스에는 훈련 이미지가 저장된 Docker 레지스트리에 대한 API 액세스 권한이 있어야 합니다. 레지스트리에서 얻은 이미지 메타데이터가 훈련 팟(Pod)을 올바르게 시작하는 데 사용됩니다.
이 컴포넌트로 시작된 훈련 팟(Pod)을 SLAD 팟(Pod)이라고도 합니다. SLAD는 Statistical Learning and Discovery의 약어이며, 팟(Pod)에서 사용되는 언어 클래스류를 개발한 연구 그룹의 이름입니다. 훈련 팟(Pod) 이름은 tr[12]?
로 시작하고 다음에 내부 vn-…
ID가 옵니다. 훈련 이미지의 이름은 차트 버전에 따라 nlclassifier-training
또는 clu-training
으로 지정됩니다. ${release-name}-master-config
구성 맵에는 훈련 팟(Pod)에 대한 JSON 템플리트가 포함됩니다.
${release-name} 은 (는) watson-assistant
입니다.
데이터 저장소 세부사항
다음 섹션에서는 서비스에서 데이터 저장소를 사용하는 방법에 대해 자세히 설명합니다. 목표는 설치 중이나 서비스가 데이터 센터에 배치되어 실행된 후 발생할 수 있는 문제를 해결하는 데 도움을 주는 것입니다.
Etcd 저장소
이 서비스는 Etcd를 키-값 저장소로 사용합니다. Etcd는 LiteLinks에서 서비스 검색에 사용되고 언어 이해 파이프라인에서 구성 스토리지로 사용됩니다.
Etcd는 5개의 팟(Pod)으로 구성됩니다. Etcd 팟(Pod) 이름은 ${release-name}-etcd3-[0-9]*
규칙을 따릅니다. 서비스 차트에는 인증이 활성화된 Etcd 버전 3이 필요합니다.
LiteLinks 서비스 검색
Dialog, NLU, Master, TAS 및 ED-MM 마이크로서비스는 LiteLinks 서버의 역할을 합니다. 각 LiteLinks 서버는 /bluegoat/litelinks/
경로 아래의 고유 키로 Etcd에 등록됩니다. 각 팟(Pod)은 IP 주소 및 포트와 같은 메타데이터를 Etcd에 저장합니다. 예를 들어, IP 주소가 10.131.2.25인 Dialog 마이크로서비스 팟(Pod)은 /bluegoat/litelinks/voyager-dialog-slot-${release-name}/10.128.0.231_8089_16ea2cde43f
라는
키 아래에 자체 등록할 수 있습니다.
${release-name} 은 (는) watson-assistant
입니다.
Store, NLU, Master, TAS 및 ED-MM 마이크로서비스는 LiteLinks 클라이언트입니다. (일부 마이크로서비스는 서버 및 클라이언트 둘 다로 작동합니다.) 각 LiteLinks 클라이언트는 이러한 Etcd 키를 읽고 서버의 등록된 팟(Pod) 주소 및 포트와 직접 통신합니다. 실제로 LiteLinks 클라이언트는 Kubernetes DNS를 사용하지 않습니다. 따라서 Kubernetes 서비스 오브젝트는 LiteLinks 서버에 사용되지 않습니다. 준비 프로브는 팟(Pod) 상태의 좋은 지표이지만 Kubernetes 서비스 오브젝트가 없으면 준비 프로브가 무시됩니다.
다음 표에는 각 LiteLinks 서버의 키 이름이 나열되어 있습니다.
마이크로서비스 | LiteLinks 서버 키 이름 |
---|---|
대화 상자 | voyager-dialog-slot-${release-name} |
NLU | voyager-nlu-slot-${release-name} |
마스터 | voyager-master-slot-${release-name} |
TAS | tas-runtime-slot-${release-name} |
ED-MM | ${release-name}-ed-mm |
LiteLinks 클라이언트 또는 서버인 마이크로서비스 팟(Pod)에는 팟(Pod) 작성 시 Etcd가 작동하고 구성 항목을 포함할 때까지 확인하고 대기하는 initContainer가 포함되어 있습니다.
구성 스토리지
언어 이해 파이프라인의 마이크로서비스는 Etcd를 사용하여 일부 구성 값을 저장합니다.
각 마이크로서비스는 Etcd에 고유 경로가 있습니다. 모델이 로드되는 인스턴스와 같은 모델에 대한 기타 메타데이터는 Etcd 경로 아래의 다른 키에 저장됩니다.
마이크로서비스 | Etcd 경로 |
---|---|
NLU | /bluegoat/voyager-nlu/voyager-nlu-slot-${release-name} |
마스터 | /bluegoat/bluegoat-master/voyager-master-slot-${release-name} |
TAS | /bluegoat/tas-runtime/tas-runtime-slot-${release-name} |
ED-MM | /bluegoat/tas-runtime/${release-name}-ed-mm/ |
마이크로서비스별 구성 값은 /config
하위 경로 아래에 저장됩니다.
MinIO
MinIO는 Amazon S3 API를 구현하는 엔터프라이즈급 오브젝트 스토리지 서비스입니다. 서비스 차트는 4개의 포드로 분산 모드에서 실행됩니다( MinIO ). 이 구성을 사용하면 절반보다 많은(즉, 3개 이상) 팟(Pod)이 사용 가능한 경우 MinIO 기능이 읽기/쓰기 모드로 완전히 작동합니다. 팟(Pod) 중 절반(2개)만 사용 가능한 경우 기능이 읽기 전용 모드로 저하됩니다.
MinIO 팟(Pod)의 이름은 ${release-name}-clu-minio-[0-9]*
로 지정됩니다. Conversational Language Understanding의 약어인 CLU는 MinIO 팟(Pod)을 언어 이해 파이프라인과 연관시키기 위해 팟(Pod) 이름에 포함됩니다. 이는 MinIO를 사용하는 NLU, Master, TAS, ED-MM 및 훈련 팟(Pod)과 같은 파이프라인 마이크로서비스일
뿐입니다.
PostgreSQL 데이터 저장소
Postgres 데이터 저장소는 PostgreSQL 고가용성을 위한 클라우드 네이티브 PostgreSQL 관리자인 stolon을 기반으로 합니다. (더 자세한 정보는 GitHub /ko/sourcestools/sourintlab/repo를 참고하세요.) Postgres 저장소는 다음 유형의 팟(Pod)으로 구성됩니다.
-
키퍼: 이러한 팟(Pod)은 PostgreSQL 데이터베이스를 실행합니다. 세 개의 키퍼 팟(Pod)이 있습니다. 세 개 중 하나는 코디네이터 키퍼로 선택됩니다. 코디네이터 키퍼는 모든 SQL 조회를 처리합니다. 나머지 팟(Pod)은 대기 상태이며 코디네이터 키퍼 팟(Pod)에서 이러한 팟(Pod)의 상태를 업데이트합니다.
키퍼 팟(Pod) 이름은
${release-name}-store-postgres-keeper-*
규칙을 따릅니다. 출시 이름이 길면, 포드 이름이${release-name prefix}-[a-f0-9]{4}-st-a617-keeper-*
와 같이 짧아질 수 있습니다.${release-name} 은 (는)
watson-assistant
입니다. 단축 이름은watson-ass
입니다. -
프록시: 이 포드는 스토어 마이크로서비스가 사용하는 진입점입니다. 프록시 팟(Pod)은 트래픽을 코디네이터 키퍼 팟(Pod)으로 라우팅합니다.
-
감시자: 코디네이터 키퍼를 결정하는 팟(Pod)입니다.
PostgreSQL 클러스터를 관리하려면 키퍼 팟(Pod) 내부에서 stolonctl
명령을 사용하십시오. PostgreSQL 구성에 대한 메타데이터는 stolon-cluster-${release-name}
이라는 configmap에 저장됩니다.
Postgres는 Store 마이크로서비스에서 어시스턴트, 스킬 및 작업공간을 저장하는 데 사용됩니다. PostgreSQL 및 Store 마이크로서비스가 실행 중이면 다른 항목이 작동 중이지 않더라도 제품에서 스킬을 내보내서 저장할 수 있습니다.
설치 중 Postgres 데이터베이스가 작성됩니다. Store 마이크로 저장소 사용자도 작성됩니다. 원하는 경우 values.yaml
구성 파일의 구성 설정을 대체하여 데이터베이스의 이름, 사용자의 이름 및 해당 비밀번호를 지정할 수 있습니다.
다음 표에는 Store 마이크로서비스에서 PostgresSQL에 연결하는 데 사용되고 설치 시 PostgreSQL 초기화에 사용되는 구성 설정이 나열되어 있습니다.
구성 설정 이름 | 설명 | 기본값 |
---|---|---|
global.postgres.store.auth.user | Store 마이크로서비스에서 사용되는 사용자 이름 | store_icp_${release-name} |
global.postgres.store.auth.authSecretName | Store 사용자의 비밀번호가 포함된 kubernetes 시크릿의 이름. 비밀번호는 랜덤으로 생성되므로 기본값은 널입니다. | null |
global.postgres.store.database | Store 마이크로서비스에서 사용되는 데이터베이스의 이름 | conversation_icp_${release-name} |
모델 메시
TAS 및 ED-MM 마이크로서비스는 모델-메시 패턴을 사용합니다. 모델 메시에서 각 팟(Pod)에는 로드된 NLP 모델 세트가 포함됩니다. 모델이 로드되는 위치의 관리는 모델-메시 라이브러리에서 처리됩니다. 정상 오퍼레이션 중에는 모델이 하나의 팟(Pod)에만 로드됩니다. 단일 팟(Pod)에서 모델에 대한 트래픽을 처리할 수 없는 경우 모델이 다른 팟(Pod)에도 로드됩니다. 모델이 로드되는 위치에 대한 메타데이터는 Etcd에 저장됩니다.
TAS 및 ED-MM은 별도의 모델-메시 그룹에 속합니다. 각 그룹에는 독립적인 팟(Pod) 및 로드된 모델 세트가 있습니다.
다음은 모델 메시가 ED-MM 마이크로서비스 팟(Pod) 그룹에서 작동하는 방식입니다. EED-MM 마이크로서비스의 경우 두 개의 팟 (Pod) A및 B가 있을 수 있습니다. 컨텍스트 엔티티 인식에 대한 도움말의 gRPS 요청은 Kubernetes DNS를 통해 수신됩니다. 요청이 팟 (Pod) A로 이동하지만 필요한 컨텍스트 엔티티 모델이 팟 (Pod) B에 로드됩니다. 팟 (Pod) A의 모델 메시는 LiteLinks를 사용하여 요청을 팟 (Pod) B에 전달합니다. 팟 (Pod) B는 적절한 모델을 사용하여 입력에서 컨텍스트 엔티티를 식별한 후 팟 (Pod) A에 응답을 전송합니다. 팟 (Pod) A는 응답의 정보를 초기 gRPC 요청을 전송한 서비스로 다시 전송합니다.
모델 메시는 TAS 마이크로서비스의 경우와 동일한 방식으로 작동합니다. 차이점은 TAS에 대한 수신 요청이 gRPC가 아니라 LiteLinks를 사용하여 TAS에 전송된다는 점입니다. 결과적으로 NLU 및 Master 마이크로서비스에는 어떤 모델이 어떤 TAS 팟(Pod)에 로드되는지 알 수 있는 방법이 없습니다.