KR-20260061975-A - HOST DEVICE AND COMPUTATIONAL STORAGE SYSTEM INCLUDING THE SAME
Abstract
본 발명은 연산 스토리지 시스템에 관한 것이다. 연산 스토리지 시스템은, 호스트 프로세서, 및 제1 연산 스토리지 장치를 포함하고 호스트 프로세서와 통신하는, 복수의 연산 스토리지 장치를 포함하고, 호스트 프로세서는, 코퍼스에 포함된 복수의 서브셋을 기초로, 복수의 서브셋에 대응하는 복수의 임베딩 벡터를 생성하되, 복수의 서브셋은 제1 서브셋 및 제2 서브셋을 포함하고, 생성된 복수의 임베딩 벡터 각각 사이의 거리에 기초하여, 복수의 연산 스토리지 장치 중 복수의 서브셋의 저장 위치를 결정하고, 결정된 저장 위치를 기초로, 복수의 서브셋의 각각을 복수의 연산 스토리지 장치 중 어느 하나로 전송하고, 제1 연산 스토리지 장치는, 사용자 쿼리 및 제1 연산 스토리지 장치에 저장된 제1 서브셋을 기초로 사용자 쿼리에 대응하는 제1 응답을 출력하는 제1 추론 동작을 수행한다.
Inventors
- 정명수
- 강승관
- 고형석
- 김희민
Assignees
- 삼성전자주식회사
- 한국과학기술원
Dates
- Publication Date
- 20260506
- Application Date
- 20241028
Claims (10)
- 호스트 프로세서; 및 제1 연산 스토리지 장치를 포함하고, 상기 호스트 프로세서와 통신하는, 복수의 연산 스토리지 장치 를 포함하고, 상기 호스트 프로세서는, 코퍼스에 포함된 복수의 서브셋을 기초로, 상기 복수의 서브셋에 대응하는 복수의 임베딩 벡터를 생성하되, 상기 복수의 서브셋은 제1 서브셋 및 제2 서브셋을 포함하고, 상기 생성된 복수의 임베딩 벡터 각각 사이의 거리에 기초하여, 상기 복수의 연산 스토리지 장치 중 상기 복수의 서브셋의 저장 위치를 결정하고, 상기 결정된 저장 위치를 기초로, 상기 복수의 서브셋의 각각을 상기 복수의 연산 스토리지 장치 중 어느 하나로 전송하고, 상기 제1 연산 스토리지 장치는, 사용자 쿼리 및 상기 제1 연산 스토리지 장치에 저장된 상기 제1 서브셋을 기초로 상기 사용자 쿼리에 대응하는 제1 응답을 출력하는 제1 추론 동작을 수행하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 복수의 서브셋은 제3 서브셋을 더 포함하고, 상기 복수의 임베딩 벡터는 상기 제1 서브셋에 대응하는 제1 임베딩 벡터, 상기 제2 서브셋에 대응하는 제2 임베딩 벡터 및 상기 제3 서브셋에 대응하는 제3 임베딩 벡터를 포함하고, 상기 호스트 프로세서는, 상기 복수의 임베딩 벡터 중 상기 제1 임베딩 벡터를 제외한 다른 임베딩 벡터의 각각과 상기 제1 임베딩 벡터 사이의 거리 중, 상기 제1 임베딩 벡터와 상기 제2 임베딩 벡터와의 거리가 미리 정해진 임계 순위 내로 가깝다고 판정하는 것에 응답하여, 상기 제2 서브셋의 저장 위치를 상기 제1 서브셋의 저장 위치와 상이한 제2 연산 스토리지 장치로 결정하고, 상기 복수의 임베딩 벡터 중 상기 제1 임베딩 벡터를 제외한 다른 임베딩 벡터의 각각과 상기 제1 임베딩 벡터 사이의 거리 중, 상기 제1 임베딩 벡터와 상기 제3 임베딩 벡터와의 거리가 상기 임계 순위 내로 가깝다고 판정하는 것에 응답하여, 상기 제3 서브셋의 저장 위치를 상기 제1 서브셋의 저장 위치와 상이하고 상기 제2 서브셋의 저장 위치와 동일한 제2 연산 스토리지 장치로 결정하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 복수의 서브셋은 제3 서브셋을 더 포함하고, 상기 복수의 임베딩 벡터는 상기 제1 서브셋에 대응하는 제1 임베딩 벡터, 상기 제2 서브셋에 대응하는 제2 임베딩 벡터 및 상기 제3 서브셋에 대응하는 제3 임베딩 벡터를 포함하고, 상기 호스트 프로세서는, 상기 복수의 임베딩 벡터 중 상기 제1 임베딩 벡터를 제외한 다른 임베딩 벡터의 각각과 상기 제1 임베딩 벡터 사이의 거리 중, 상기 제1 임베딩 벡터와 상기 제2 임베딩 벡터와의 거리가 미리 정해진 임계 순위 내로 가깝다고 판정하는 것에 응답하여, 상기 제2 서브셋의 저장 위치를 상기 제1 서브셋의 저장 위치와 상이한 제2 연산 스토리지 장치로 결정하고, 상기 복수의 임베딩 벡터 중 상기 제2 임베딩 벡터를 제외한 다른 임베딩 벡터의 각각과 상기 제2 임베딩 벡터 사이의 거리 중, 상기 제2 임베딩 벡터와 상기 제3 임베딩 벡터와의 거리가 미리 정해진 임계 순위 내로 가깝다고 판정되는 것에 응답하여, 상기 제3 서브셋의 저장 위치를 상기 제2 서브셋의 저장 위치와 상이한 제3 연산 스토리지 장치로 결정하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 호스트 프로세서는, 상기 복수의 서브셋을 복수의 서브셋 그룹으로 분류하고, 상기 복수의 임베딩 벡터 중 하나의 임베딩 벡터와의 거리가 가까운 순서대로 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋을, 상기 복수의 서브셋 그룹 중 하나의 서브셋 그룹으로 분류하고, 상기 하나의 임베딩 벡터에 대응하는 서브셋을, 상기 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋이 분류된 상기 하나의 서브셋 그룹과 상이한 서브셋 그룹으로 분류하는, 연산 스토리지 시스템.
- 제4항에 있어서, 상기 호스트 프로세서는, 상기 복수의 서브셋 그룹의 각각을 상기 복수의 연산 스토리지 장치 중 어느 하나로 전송하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 호스트 프로세서는, 상기 복수의 서브셋을 복수의 서브셋 그룹으로 분류하고, 상기 복수의 임베딩 벡터 중 하나의 임베딩 벡터와의 거리가 가까운 순서대로 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋을, 상기 복수의 서브셋 그룹 중 하나의 서브셋 그룹으로 분류하고, 상기 하나의 임베딩 벡터에 대응하는 서브셋을, 상기 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋이 분류된 상기 하나의 서브셋 그룹과 상이한 서브셋 그룹으로 분류하고, 상기 복수의 서브셋 그룹의 각각을 상기 복수의 연산 스토리지 장치 중 2개 이상의 연산 스토리지 장치로 전송하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 호스트 프로세서는, 상기 복수의 서브셋을 복수의 서브셋 그룹으로 분류하고, 상기 복수의 서브셋 그룹의 각각에 포함된 서브셋을 상기 복수의 연산 스토리지 장치의 각각에 저장하고, 상기 복수의 서브셋 그룹 중 어느 하나의 서브셋 그룹에 포함된 서브셋을 상기 복수의 연산 스토리지 장치에 저장할 때, 상기 복수의 연산 스토리지 장치 각각에 저장되는 서브셋의 개수의 최댓값과 최솟값의 차이는 0 또는 1이고, 상기 호스트 프로세서는, 상기 사용자 쿼리로부터 복수의 키워드를 추출하고, 상기 복수의 서브셋 중 2개 이상의 서브셋 각각이 상기 추출된 복수의 키워드 중 동일한 개수의 키워드를 포함하고, 상기 2개 이상의 서브셋 각각이 포함하는 모든 키워드가 서로 일치하는 것에 응답하여, 상기 2개 이상의 서브셋을 동일한 서브셋 그룹으로 분류하는, 연산 스토리지 시스템.
- 제1항에 있어서, 상기 호스트 프로세서는, 상기 복수의 서브셋을 복수의 서브셋 그룹으로 분류하고, 상기 복수의 서브셋 그룹의 각각에 포함된 서브셋을 상기 복수의 연산 스토리지 장치의 각각에 저장하고, 상기 복수의 서브셋 그룹 중 어느 하나의 서브셋 그룹에 포함된 서브셋을 상기 복수의 연산 스토리지 장치에 저장할 때, 상기 복수의 연산 스토리지 장치 각각에 저장되는 서브셋의 개수의 최댓값과 최솟값의 차이는 0 또는 1이고, 상기 호스트 프로세서는, 클러스터링 알고리즘을 이용하여, 상기 생성된 복수의 임베딩 벡터의 위치를 기초로 상기 복수의 임베딩 벡터를 클러스터링(clustering)함으로써, 복수의 클러스터를 생성하고, 상기 생성된 복수의 클러스터의 각각에 포함된 하나 이상의 임베딩 벡터에 대응하는 하나 이상의 서브셋을 상기 복수의 서브셋 그룹 중 어느 하나로 분류하는, 연산 스토리지 시스템.
- 호스트 프로세서; 및 제1 연산 스토리지 장치 및 제2 연산 스토리지 장치를 포함하고, 상기 호스트 프로세서와 통신하는, 복수의 연산 스토리지 장치 를 포함하고, 상기 호스트 프로세서는, 코퍼스에 포함된 복수의 서브셋을 기초로, 상기 복수의 서브셋에 대응하는 복수의 임베딩 벡터를 생성하고, 상기 복수의 서브셋을 복수의 서브셋 그룹으로 분류하고, 상기 복수의 임베딩 벡터 중 하나의 임베딩 벡터와의 거리가 가까운 순서대로 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋을, 상기 복수의 서브셋 그룹 중 하나의 서브셋 그룹으로 분류하고, 상기 하나의 임베딩 벡터에 대응하는 서브셋을, 상기 미리 정해진 개수의 임베딩 벡터에 대응하는 서브셋이 분류된 상기 하나의 서브셋 그룹과 상이한 서브셋 그룹으로 분류하고, 상기 복수의 서브셋 그룹의 각각을 상기 복수의 연산 스토리지 장치 중 어느 하나로 전송하고, 상기 복수의 서브셋 중 사용자 쿼리와 연관된 서브셋을 판정하고, 상기 사용자 쿼리와 연관된 서브셋은, 상기 제1 연산 스토리지에 저장된 제1 서브셋 및 상기 제2 연산 스토리지에 저장된 제2 서브셋을 포함하고, 상기 제1 연산 스토리지 장치는, 상기 사용자 쿼리 및 상기 제1 서브셋을 기초로 상기 사용자 쿼리에 대응하는 제1 응답을 출력하는 제1 추론 동작을 수행하고, 상기 제2 연산 스토리지 장치는, 상기 사용자 쿼리 및 상기 제2 서브셋을 기초로 상기 사용자 쿼리에 대응하는 제2 응답을 출력하는 제2 추론 동작을 수행하고, 상기 제1 추론 동작의 적어도 일부 및 상기 제2 추론 동작의 적어도 일부는 병렬적으로 수행되는, 연산 스토리지 시스템.
- 호스트 프로세서; 및 상기 호스트 프로세서에 연결된 호스트 메모리 를 포함하고, 상기 호스트 프로세서는, 코퍼스에 포함된 복수의 서브셋을 기초로, 상기 복수의 서브셋에 대응하는 복수의 임베딩 벡터를 생성하되, 상기 복수의 서브셋은 제1 서브셋 및 제2 서브셋을 포함하고, 상기 생성된 복수의 임베딩 벡터 각각 사이의 거리에 기초하여, 상기 호스트 프로세서와 통신하는 복수의 연산 스토리지 장치 중 상기 복수의 서브셋의 저장 위치를 결정하고, 상기 결정된 저장 위치를 기초로, 상기 복수의 서브셋의 각각을 상기 복수의 연산 스토리지 장치 중 어느 하나로 전송하는, 호스트 장치.
Description
호스트 장치 및 이를 포함하는 연산 스토리지 시스템{HOST DEVICE AND COMPUTATIONAL STORAGE SYSTEM INCLUDING THE SAME} 본 발명은 언어 모델을 이용한 추론 동작을 수행하기 위한 호스트 장치 및 이를 포함하는 연산 스토리지 시스템에 관한 것이다. 생성형 언어 모델은 입력된 텍스트 데이터를 기반으로 새로운 텍스트를 생성하는 인공지능(AI) 기술이다. 언어 모델은 대규모의 텍스트 데이터를 학습하여 다양한 주제나 스타일에 맞는 텍스트를 자동으로 작성할 수 있다. 언어 모델은 주로 자연어 처리 분야에서 사용되며, 기계 번역, 텍스트 요약, 대화형 AI 등 여러 응용 분야에서 활용될 수 있다. 언어 모델은 복잡한 언어 구조나 비정형 데이터를 처리하는 데에도 널리 사용되고 있다. 언어 모델에 입력된 데이터는, 추론(inference) 동작을 통해 언어 모델의 다층 네트워크에서 처리될 수 있다. 언어 모델의 추론 동작을 통해 다양한 형태의 텍스트 응답이 생성될 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템을 설명하기 위한 도면이다. 도 2는 본 개시의 일 실시예에 따른 연산 스토리지 시스템의 호스트 프로세서에 대한 세부 사항을 설명하기 위한 도면이다. 도 3은 본 개시의 일 실시예에 따른 연산 스토리지 장치의 내부 구성을 나타내는 도면이다. 도 4는 도 3의 가속기의 내부 구성을 설명하기 위한 도면이다. 도 5는 본 개시의 일 실시예에 따른 호스트 프로세서의 요청에 따라 연산 스토리지 장치가 동작하는 예시를 설명하기 위한 도면이다. 도 6은 본 개시의 일 실시예에 따른 연산 스토리지 시스템의 동작 방법을 나타내는 흐름도이다. 도 7은 도 6의 S620 단계를 상세하게 설명하기 위한 도면이다. 도 8은 임베딩 벡터 공간 내 복수의 서브셋으로부터 변환된 복수의 임베딩 벡터를 나타내는 도면이다. 도 9는 복수의 임베딩 벡터가 그룹화되는 예시를 나타내는 도면이다. 도 10은 도 9의 복수의 서브셋 그룹이 연산 스토리지 장치 그룹에 저장되는 일 예시를 나타내는 도면이다. 도 11은 도 9의 복수의 서브셋 그룹이 연산 스토리지 장치 그룹에 저장되는 다른 예시를 나타내는 도면이다. 도 12는 본 개시의 다른 실시예에 따라 복수의 서브셋이 복수의 연산 스토리지 장치에 저장되는 예시를 나타내는 도면이다. 도 13은 본 개시의 일 실시예에 따른 복수의 서브셋을 그룹화하는 예시를 나타내는 도면이다. 도 14는 본 개시의 다른 실시예에 따른 복수의 서브셋을 그룹화하는 예시를 나타내는 도면이다. 도 15는 복수의 서브셋 각각의 저장 위치와 연관된 테이블의 예시를 나타내는 도면이다. 도 16은 도 6의 S630 단계를 상세하게 설명하기 위한 흐름도이다. 도 17은 도 16의 S1660 단계의 토큰화와 임베딩 룩업 동작을 설명하기 위한 도면이다. 도 18은 복수의 토큰화와 임베딩 룩업 동작에 따라 생성된 복수의 임베딩 벡터를 나타내는 도면이다. 도 19는 도 16의 S1690 단계의 주소와 식별자 간의 관계를 나타내는 관계 테이블을 설명하기 위한 도면이다. 도 20은 도 6의 S640 단계를 상세하게 설명하기 위한 도면이다. 도 21 및 도 22는 도 6의 S650 단계를 상세하게 설명하기 위한 도면이다. 도 23은 복수의 추론 동작이 가속기에서 병렬적으로 수행되는 예시를 나타내는 도면이다. 도 24는 로컬 응답을 기초로 최종 응답이 결정되는 예시를 나타내는 도면이다. 도 25는 도 6의 S660 단계의 일 실시예를 설명하기 위한 도면이다. 도 26은 도 6의 S660 단계의 다른 실시예를 설명하기 위한 도면이다. 이하에서, 도 1 내지 도 26을 참조하여, 본 발명의 다양한 실시예들에 대하여 설명한다. 명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭할 수 있다. 본 개시에서, '복수의 A 각각'은, 복수의 A에 포함된 모든 구성 요소의 각각을 지칭하거나, 복수의 A에 포함된 일부 구성 요소의 각각을 지칭할 수 있다. 예를 들어, 복수의 연산 스토리지 장치 각각은, 복수의 연산 스토리지 장치에 포함된 모든 연산 스토리지 장치의 각각을 지칭하거나, 복수의 연산 스토리지 장치에 포함된 일부 연산 스토리지 장치의 각각을 지칭할 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템(100)을 설명하기 위한 도면이다. 도시된 바에 따르면, 연산 스토리지 시스템(100)은 호스트 장치(105) 및 연산 스토리지 장치 그룹(120)을 포함할 수 있다. 연산 스토리지 장치 그룹(120)은, 복수의 연산 스토리지 장치(120_1~120_n, n은 2 이상의 자연수)를 포함할 수 있다. 도 1에서는, 설명의 편의를 위하여 호스트 장치(105) 및 연산 스토리지 장치 그룹(120)이 연산 스토리지 시스템(100)의 외부에 위치하는 것으로 도시되었으나, 호스트 장치(105) 및 연산 스토리지 장치 그룹(120)은 연산 스토리지 시스템(100) 내부에 포함된 구성일 수 있다. 호스트 장치(105)는 호스트 프로세서(110) 및 호스트 메모리(115)를 포함할 수 있다. 호스트 프로세서(110)는 호스트 장치(105)의 전반적인 동작을 제어할 수 있다. 예를 들어, 호스트 프로세서(110)는 CPU(central processing unit), AP(application processor), GPU(graphic processing Unit), NPU(neural processing unit), FPGA(field-programmable gate array) 또는 마이크로프로세서를 포함하는 다양한 프로세싱 유닛 중 적어도 하나로 구현될 수 있다. 또한, 호스트 프로세서(110)는 시스템 온 칩(system-on-a-chip, SoC)으로 구현될 수 있다. 호스트 프로세서(110)는 단일 프로세서 또는 임의의 수의 프로세서로 구성될 수 있다. 호스트 프로세서(110)는 RISC(reduced instruction set computer) 아키텍처, CISC(complex instruction set computer) 아키텍처 또는 이들 조합으로 구성될 수 있다. 또한, 호스트 프로세서(110)는 단일 코어 프로세서 또는 다중 코어 프로세서일 수 있다. 호스트 프로세서(110)는 호스트 메모리(115)와 연결될 수 있다. 호스트 메모리(115)는 호스트 프로세서(110)의 동작에 필요한 데이터, 명령어 또는 프로그램을 저장할 수 있다. 일 실시예에서, 호스트 메모리(115)는 단기 데이터를 저장하기 위해 사용될 수 있다. 여기서, 단기 데이터는 장기간 저장되지 않을 것으로 예상되는 데이터를 지칭할 수 있다. 구체적 예로, 단기 데이터는 임시 파일, 캐시(cache) 등을 포함할 수 있다. 호스트 프로세서(110) 및 호스트 메모리(115)는 다양한 애플리케이션이 실행될 수 있는 운영 체제를 지원할 수 있다. 애플리케이션은 호스트 메모리(115)에 대하여 독출(read) 요청 또는 기록(write) 요청을 발행할 수 있다. 호스트 메모리 컨트롤러(125)는 애플리케이션이 발행한 요청에 기반하여, 호스트 프로세서(110)와 호스트 메모리(115) 사이의 데이터 전송을 관리할 수 있다. 호스트 프로세서(110)는 호스트 드라이버(130)를 통해 연산 스토리지 장치 그룹(120) 내 복수의 연산 스토리지 장치(120_1~120_n)과 통신할 수 있다. 호스트 장치(105)(또는, 호스트 프로세서(110))와 복수의 연산 스토리지 장치(120_1~120_n)는 PCIe(Peripheral Component Interconnect express) 프로토콜에 기초하여 통신할 수 있으나, 이에 한정되지 않는다. 예를 들어, 호스트 프로세서(110)와 복수의 연산 스토리지 장치(120_1~120_n)는 NVMe(Non-Volatile Memory Express), NVMe-oF(NVMe over Fabrics), RDMA(Remote Direct Memory Access), TCP/IP(Transmission Control Protocol/Internet Protocol), UFS(Universal Flash Storage), eMMC(embedded MultiMediaCard), InfiniBand, 인피니밴드(Infiniband), SCSI(SAS; Serial Attached Small Computer System Interface), iSCSI(Internet SCSI), SATA(Serial AT Attachment) 등 다양한 프로토콜에 기초하여 통신할 수 있다. 연산 스토리지 장치 그룹(120) 내 복수의 연산 스토리지 장치(120_1~120_n) 각각은, 연산 서비스 및 데이터 스토리지 서비스를 제공하는 장치일 수 있다. 복수의 연산 스토리지 장치(120_1~120_n) 각각은 SSD(solid state drive), HDD(hard disk drive), SSHD(solid state hybrid drive) 등을 포함할 수 있다. 복수의 연산 스토리지 장치(120_1~120_n) 각각의 내부 구성은 도 3 및 도 4를 참조하여 상세히 후술된다. 연산 스토리지 장치 그룹(120)내 복수의 연산 스토리지 장치(120_1~120_n) 각각은, 서로 독립적으로 및/또는 병렬적으로 작업을 수행할 수 있다. 예를 들어, 제1 연산 스토리지 장치(120_1) 및 제2 연산 스토리지 장치(120_2) 각각은, 서로 다른 독출(read) 동작, 기록(write) 동작 및/또는 하드웨어 가속기를 이용한 추론 동작을 병렬적으로 수행할 수 있다. 복수의 연산 스토리지 장치(120_1~120_n) 각각은 호스트 프로세서(110)로부터 수신된 요청에 대한 출력을 생성할 수 있다. 예를 들어, 복수의 연산 스토리지 장치(120_1~120_n) 각각은 호스트 프로세서로부터 수신된 독출 요청에 응답하여, 복수의 연산 스토리지 장치(120_1~120_n) 각각에 저장된 데이터를 독출할 수 있다. 또한, 복수의 연산 스토리지 장치(120_1~120_n) 각각은 호스트 프로세서로부터 수신된 기록 요청에 응답하여, 복수의 연산