Search

KR-20260061974-A - COMPUTATIONAL STORAGE DEVICE AND SYSTEM INCLUDING THE SAME

KR20260061974AKR 20260061974 AKR20260061974 AKR 20260061974AKR-20260061974-A

Abstract

본 발명은 연산 스토리지 장치에 관한 것이다. 연산 스토리지 장치는, 복수의 서브셋을 포함하는 코퍼스를 저장하는 메모리 어레이 및 언어 모델을 로드하고 메모리 어레이로부터 복수의 서브셋을 독출하고 로드된 언어 모델의 토크나이저 및 임베딩 레이어를 통해 복수의 서브셋으로부터 제1 임베딩 벡터 및 제2 임베딩 벡터를 포함하는 복수의 임베딩 벡터를 생성하고 생성된 복수의 임베딩 벡터를 메모리 어레이에 기록하는 하드웨어 가속기를 포함하고, 복수의 서브셋은 제1 서브셋 및 제2 서브셋을 포함하고, 하드웨어 가속기는, 메모리 어레이에 대해, 복수의 임베딩 벡터 중 사용자 쿼리와 연관된 적어도 하나의 임베딩 벡터를 독출하고, 로드된 언어 모델을 이용하여, 사용자 쿼리 및 독출된 적어도 하나의 임베딩 벡터를 기초로 사용자 쿼리에 대응하는 응답을 출력하는 추론 동작을 수행한다.

Inventors

  • 정명수
  • 강승관
  • 고형석
  • 김희민

Assignees

  • 삼성전자주식회사
  • 한국과학기술원

Dates

Publication Date
20260506
Application Date
20241028

Claims (10)

  1. 복수의 서브셋을 포함하는 코퍼스(corpus)를 저장하는, 메모리 어레이 - 상기 복수의 서브셋은 제1 서브셋 및 제2 서브셋을 포함함 -; 및 언어 모델을 로드(load)하고, 상기 메모리 어레이로부터 상기 복수의 서브셋을 독출(read)하고, 상기 로드된 언어 모델의 토크나이저 및 임베딩 레이어를 통해 상기 복수의 서브셋으로부터 제1 임베딩 벡터 및 제2 임베딩 벡터를 포함하는 복수의 임베딩 벡터를 생성하고, 상기 생성된 복수의 임베딩 벡터를 상기 메모리 어레이에 기록(write)하는, 하드웨어 가속기 를 포함하고, 상기 하드웨어 가속기는, 상기 메모리 어레이에 대해, 상기 복수의 임베딩 벡터 중 사용자 쿼리와 연관된 적어도 하나의 임베딩 벡터를 독출하고, 상기 로드된 언어 모델을 이용하여, 상기 사용자 쿼리 및 상기 독출된 적어도 하나의 임베딩 벡터를 기초로 상기 사용자 쿼리에 대응하는 응답을 출력하는 추론 동작을 수행하는, 연산 스토리지 장치.
  2. 제1항에 있어서, 메모리 컨트롤러를 더 포함하고, 상기 메모리 어레이는, 상기 메모리 컨트롤러에 의해 액세스되는 제1 영역; 및 상기 하드웨어 가속기에 의해 액세스되는 상기 제1 영역과 상이한 제2 영역 을 포함하고, 상기 메모리 컨트롤러는 상기 제2 영역을 액세스하는 것이 제한되고, 상기 메모리 컨트롤러는, 상기 복수의 서브셋을 상기 제1 영역에 기록하고, 상기 하드웨어 가속기는, 상기 복수의 임베딩 벡터를 상기 제2 영역에 기록하는, 연산 스토리지 장치.
  3. 제1항에 있어서, 상기 하드웨어 가속기에 로드된 언어 모델은, 입력된 텍스트를 토큰화하고, 상기 토큰화된 텍스트를 출력하는, 토크나이저(tokenizer); 상기 토큰화된 텍스트를 기초로 임베딩(embedding) 벡터를 출력하는, 임베딩 레이어; 상기 임베딩 벡터를 입력받고, 각각 이전 레이어의 출력을 입력받아 처리한 뒤 다음 레이어로 전달하는, 복수의 디코더(decoder) 레이어; 및 상기 복수의 디코더 레이어 중 최종 디코더 레이어의 출력을 입력받아 상기 텍스트에 대응하는 응답을 출력하는, MLP(multi-layer perceptron) 레이어 를 포함하는, 연산 스토리지 장치.
  4. 제3항에 있어서, 상기 하드웨어 가속기는, 상기 토크나이저에 의해, 상기 사용자 쿼리를 토큰화하고, 상기 임베딩 레이어에 의해, 상기 토큰화된 사용자 쿼리를 임베딩 벡터로 변환하는, 연산 스토리지 장치.
  5. 제4항에 있어서, 상기 사용자 쿼리와 연관된 적어도 하나의 임베딩 벡터는, 상기 제1 임베딩 벡터를 포함하고, 상기 하드웨어 가속기는, 상기 복수의 디코더 레이어 중 상기 임베딩 레이어와 연결된 디코더 레이어에 상기 제1 임베딩 벡터 및 상기 사용자 쿼리로부터 변환된 임베딩 벡터를 입력하고, 상기 복수의 디코더 레이어 및 상기 MLP 레이어에 의해, 상기 제1 임베딩 벡터 및 상기 사용자 쿼리로부터 변환된 임베딩 벡터를 기초로, 상기 사용자 쿼리에 대응하는 상기 응답의 시작 토큰을 출력하고, 상기 시작 토큰을 상기 임베딩 레이어로 입력하는, 연산 스토리지 장치.
  6. 호스트 프로세서 및 상기 호스트 프로세서에 연결된 호스트 메모리를 포함하는 호스트 장치; 및 상기 호스트 프로세서와 통신하고, 출력을 생성하도록 구성된 연산 스토리지 장치를 포함하고, 상기 연산 스토리지 장치는, 복수의 서브셋을 포함하는 코퍼스를 저장하는, 메모리 어레이; 및 언어 모델을 로드하고, 상기 메모리 어레이로부터 상기 복수의 서브셋을 독출하고, 상기 로드된 언어 모델의 토크나이저 및 임베딩 레이어를 통해 상기 복수의 서브셋으로부터 복수의 임베딩 벡터를 생성하고, 상기 생성된 복수의 임베딩 벡터를 상기 메모리 어레이에 기록하는, 하드웨어 가속기 를 포함하고, 상기 하드웨어 가속기는, 상기 메모리 어레이에 대해, 상기 복수의 임베딩 벡터 중 사용자 쿼리와 연관된 적어도 하나의 임베딩 벡터를 독출하고, 상기 로드된 언어 모델을 이용하여, 상기 사용자 쿼리 및 상기 독출된 적어도 하나의 임베딩 벡터를 기초로 상기 사용자 쿼리에 대응하는 응답을 출력하는 추론 동작을 수행하는, 연산 스토리지 시스템.
  7. 제6항에 있어서, 상기 호스트 프로세서는, 상기 코퍼스로부터 상기 사용자 쿼리와 연관된 적어도 하나의 서브셋의 주소를 획득하고, 상기 적어도 하나의 서브셋의 주소에 대응하는 상기 적어도 하나의 임베딩 벡터의 식별자를 획득하고, 상기 적어도 하나의 임베딩 벡터의 식별자를 상기 연산 스토리지 장치로 전송하고, 상기 하드웨어 가속기는, 상기 적어도 하나의 임베딩 벡터의 식별자를 이용하여, 상기 메모리 어레이로부터 상기 적어도 하나의 임베딩 벡터를 독출하는, 연산 스토리지 시스템.
  8. 제7항에 있어서, 상기 하드웨어 가속기는, 상기 로드된 언어 모델을 이용하여, 상기 독출된 적어도 하나의 임베딩 벡터의 각각과 상기 사용자 쿼리를 기초로, 상기 사용자 쿼리에 대응하는 적어도 하나의 응답 및 상기 적어도 하나의 응답에 대응하는 평가 메트릭을 출력하고, 상기 적어도 하나의 응답 및 상기 평가 메트릭을 상기 호스트 장치로 전송하고, 상기 호스트 프로세서는, 상기 적어도 하나의 응답 중 평가 메트릭이 가장 높은 응답을 최종 응답으로 결정하고, 상기 결정된 최종 응답을 상기 호스트 장치의 외부로 출력하는, 연산 스토리지 시스템.
  9. 제7항에 있어서, 상기 하드웨어 가속기는, 상기 로드된 언어 모델을 이용하여, 상기 독출된 적어도 하나의 임베딩 벡터와 상기 사용자 쿼리를 기초로, 적어도 하나의 제1 토큰 및 상기 적어도 하나의 제1 토큰의 각각에 대한 제1 평가 메트릭을 출력하여 상기 호스트 프로세서로 전송하고, 상기 호스트 프로세서는, 상기 적어도 하나의 제1 토큰 중 상기 제1 평가 메트릭이 가장 높은 제1 토큰을 선택하여 상기 하드웨어 가속기로 전송하고, 상기 하드웨어 가속기는, 상기 로드된 언어 모델을 이용하여, 상기 제1 평가 메트릭이 가장 높은 토큰을 기초로 적어도 하나의 제2 토큰 및 상기 적어도 하나의 제2 토큰의 각각에 대한 제2 평가 메트릭을 출력하고, 상기 호스트 프로세서는, 상기 제2 평가 메트릭이 가장 높은 제2 토큰을 상기 제1 평가 메트릭이 가장 높은 제1 토큰의 다음 순서의 토큰으로 결정하고, 상기 사용자 쿼리에 대응하는 응답은, 상기 제1 토큰 및 상기 제2 토큰을 포함하는, 연산 스토리지 시스템.
  10. 호스트 프로세서 및 상기 호스트 프로세서에 연결된 호스트 메모리를 포함하는 호스트 장치; 및 상기 호스트 프로세서와 통신하고, 출력을 생성하도록 구성된 연산 스토리지 장치를 포함하고, 상기 연산 스토리지 장치는, 복수의 서브셋을 포함하는 코퍼스를 저장하는, 메모리 어레이; 및 언어 모델을 로드하고, 상기 메모리 어레이로부터 상기 복수의 서브셋을 독출(read)하고, 상기 로드된 언어 모델의 토크나이저 및 임베딩 레이어를 통해 상기 복수의 서브셋으로부터 복수의 임베딩 벡터를 생성하고, 상기 생성된 복수의 임베딩 벡터를 상기 메모리 어레이에 기록(write)하는, 하드웨어 가속기를 포함하고, 상기 호스트 프로세서는, 상기 코퍼스로부터 사용자 쿼리와 연관된 적어도 하나의 임베딩 벡터를 색인하고, 상기 색인된 적어도 하나의 임베딩 벡터의 식별자를 상기 연산 스토리지 장치로 전송하고, 상기 하드웨어 가속기는, 상기 적어도 하나의 임베딩 벡터의 식별자를 이용하여, 상기 메모리 어레이로부터 상기 적어도 하나의 임베딩 벡터를 독출하고, 상기 로드된 언어 모델을 이용하여, 상기 사용자 쿼리 및 상기 독출된 적어도 하나의 임베딩 벡터를 기초로 상기 사용자 쿼리에 대응하는 응답을 출력하는 추론 동작을 수행하고, 상기 하드웨어 가속기 및 상기 메모리 어레이는 제1 프로토콜에 기초하여 서로 통신하고, 상기 연산 스토리지 장치는 상기 제1 프로토콜과 상이한 제2 프로토콜에 기초하여 상기 호스트 장치와 통신하고, 상기 제1 프로토콜에 따른 평균 통신 속도는 상기 제2 프로토콜에 따른 평균 통신 속도보다 빠른, 연산 스토리지 시스템.

Description

연산 스토리지 장치 및 시스템{COMPUTATIONAL STORAGE DEVICE AND SYSTEM INCLUDING THE SAME} 본 발명은 언어 모델을 이용한 추론 동작을 수행하는 연산 스토리지 장치 및 시스템에 관한 것이다. 생성형 언어 모델은 입력된 텍스트 데이터를 기반으로 새로운 텍스트를 생성하는 인공지능(AI) 기술이다. 언어 모델은 대규모의 텍스트 데이터를 학습하여 다양한 주제나 스타일에 맞는 텍스트를 자동으로 작성할 수 있다. 언어 모델은 주로 자연어 처리 분야에서 사용되며, 기계 번역, 텍스트 요약, 대화형 AI 등 여러 응용 분야에서 활용될 수 있다. 언어 모델은 복잡한 언어 구조나 비정형 데이터를 처리하는 데에도 널리 사용되고 있다. 언어 모델에 입력된 데이터는, 추론(inference) 동작을 통해 언어 모델의 다층 네트워크에서 처리될 수 있다. 언어 모델의 추론 동작을 통해 다양한 형태의 텍스트 응답이 생성될 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템을 설명하기 위한 도면이다. 도 2는 본 개시의 일 실시예에 따른 연산 스토리지 시스템의 호스트 프로세서에 대한 세부 사항을 설명하기 위한 도면이다. 도 3은 본 개시의 일 실시예에 따른 연산 스토리지 장치의 내부 구성을 나타내는 도면이다. 도 4는 본 개시의 일 실시예에 따른 가속기의 내부 구성을 설명하기 위한 도면이다. 도 5는 본 개시의 일 실시예에 따른 호스트 프로세서의 요청에 따라 연산 스토리지 장치가 동작하는 예시를 설명하기 위한 도면이다. 도 6은 본 개시의 일 실시예에 따른 연산 스토리지 시스템의 동작 방법을 나타내는 흐름도이다. 도 7은 도 6의 S610 단계를 상세하게 설명하기 위한 흐름도이다. 도 8은 도 7의 언어 모델 데이터의 예시를 나타내는 도면이다. 도 9는 도 6의 S620 단계를 상세하게 설명하기 위한 도면이다. 도 10은 도 6의 S630 단계를 상세하게 설명하기 위한 흐름도이다. 도 11은 도 10의 S1060 단계의 토큰화와 임베딩 룩업 동작을 설명하기 위한 도면이다. 도 12는 복수의 토큰화와 임베딩 룩업 동작에 따라 생성된 복수의 임베딩 벡터를 나타내는 도면이다. 도 13은 도 10의 S1090 단계의 주소와 식별자 간의 관계를 나타내는 관계 테이블을 설명하기 위한 도면이다. 도 14는 도 6의 S640 단계를 상세하게 설명하기 위한 도면이다. 도 15 및 도 16은 도 6의 S650 단계를 상세하게 설명하기 위한 도면이다. 도 17은 복수의 추론 동작이 가속기에서 병렬적으로 수행되는 예시를 나타내는 도면이다. 도 18은 로컬 응답을 기초로 최종 응답이 결정되는 예시를 나타내는 도면이다. 도 19는 도 6의 S660 단계의 일 실시예를 설명하기 위한 도면이다. 도 20은 도 6의 S660 단계의 다른 실시예를 설명하기 위한 도면이다. 이하에서, 도 1 내지 도 20을 참조하여, 본 발명의 다양한 실시예들에 대하여 설명한다. 명세서 전문에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭할 수 있다. 도 1은 본 개시의 일 실시예에 따른 연산 스토리지 시스템(100)을 설명하기 위한 도면이다. 도시된 바에 따르면, 연산 스토리지 시스템(100)은 호스트 장치(105) 및 연산 스토리지 장치(120)를 포함할 수 있다. 도 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)와 통신할 수 있다. 호스트 장치(105)(또는, 호스트 프로세서(110))와 연산 스토리지 장치(120)는 PCIe(Peripheral Component Interconnect express) 프로토콜에 기초하여 통신할 수 있으나, 이에 한정되지 않는다. 예를 들어, 호스트 프로세서(110)와 연산 스토리지 장치(120)는 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)는 연산 서비스 및 데이터 스토리지 서비스를 제공하는 장치일 수 있다. 도 1에서는, 연산 스토리지 시스템(100)이 하나의 연산 스토리지 장치(120)를 포함하는 것으로 도시되었으나, 이에 한정되지 않으며, 연산 스토리지 시스템(100)은 복수의 연산 스토리지 장치를 포함할 수 있다. 연산 스토리지 장치(120)는 SSD(solid state drive), HDD(hard disk drive), SSHD(solid state hybrid drive) 등을 포함할 수 있다. 연산 스토리지 장치(120)의 내부 구성은 도 3 및 도 4를 참조하여 상세히 후술된다. 연산 스토리지 장치(120)는 호스트 프로세서(110)로부터 수신된 요청에 대한 출력을 생성할 수 있다. 예를 들어, 연산 스토리지 장치(120)는 호스트 프로세서로부터 수신된 독출 요청에 응답하여, 연산 스토리지 장치(120)에 저장된 데이터를 독출할 수 있다. 또한, 연산 스토리지 장치(120)는 호스트 프로세서로부터 수신된 기록 요청에 응답하여, 연산 스토리지 장치(120)에 데이터를 저장할 수 있다. 호스트 프로세서(110)로부터 수신된 요청에 따라 연산 스토리지 장치(120)가 동작하는 예시는 도 5를 참조하여 상세히 후술된다. 도 2는 본 개시의 일 실시예에 따른 연산 스토리지 시스템(100)의 호스트 프로세서(110)에 대한 세부 사항을 설명하기 위한 도면이다. 도시된 바에 따르면, 연산 스토리지 시스템(100)은 호스트 프로세서(110)를 포함할 수 있다. 호스트 프로세서(110)는 연산 스토리지 시스템(100)의 전반적인 동작을 제어할 수 있다. 호스트 프로세서(110)는 호스트 메모리 컨트롤러(125) 및 클럭(205)을 포함할 수 있다. 호스트 메모리 컨트롤러(125)는 호스트 프로세서(110)와 호스트 메모리(115) 사이의 데이터 전송을 관리할 수 있다. 클럭(205)은 호스트 프로세서(110)와 호스트 메모리(115)의 작업을 동기화할 수 있다. 호스트 프로세서(110)는 호스트 메모리(115)와 연결될 수 있다. 호스트 메모리(115)는 휘발성 메모리, 비휘발성 메모리 또는 이들의 조합일 수 있다. 예를 들어, 호스트 메모리(115)는 DRAM(dynamic random-access memory), SRAM(static random-access memory) 등과 같은 휘발성 메모리 및/또는 EEPROM(electrically erasable programmable read-only memory), FRAM(ferroelectric random-access memory), PRAM(phase-change random-access memory), MRAM(magneto-resistive random-access memory), Flash Memory 등과 같은 비휘발성 메모리를 포함할 수 있다. 호스트 프로세서(110)는 연산 스토리지 장치(120)와 연결될 수 있다. 호스트 프로세서(110)는 연산 스토리지