# 릴리즈 노트

## v1.3.1

**출시일:** 2026년 7월 9일
**유형:** Minor

NPU 내부 16비트 정수 지원, SIMD 수준 선택, NPU 타임아웃 설정, RedHat 계열 OS용 DNF(RPM) 패키지 지원과 안정성 및 성능 개선이 포함되었습니다.

### 추가

- **16비트 정수형 지원** — NPU 내부 자료형으로 16비트 정수형을 지원합니다. 모델 입출력 자료형에는 영향이 없습니다.
- **RedHat 계열 OS용 DNF(RPM) 패키지** — RHEL, Rocky Linux(x86_64, aarch64)에서 모빌린트 DNF 저장소를 통해 `mobilint-qb-runtime`과 `mobilint-cli`를 설치할 수 있습니다. 설치 방법은 [런타임 라이브러리 설치](#dnf)를 참고하세요.
- **SIMD 수준 선택** — 스케일 및 전치 연산에서 AVX-512를 지원합니다. 기본적으로 시스템이 지원하는 가장 빠른 SIMD 수준을 자동으로 선택하며, `QBRUNTIME_SIMD_LEVEL` 환경 변수(`auto`, `avx512`, `avx2`, `sse2`)로 직접 지정할 수도 있습니다.
- **NPU 타임아웃 설정** — `QBRUNTIME_NPU_TIMEOUT_MS` 환경 변수로 qb Runtime이 NPU 응답을 기다리는 시간을 설정할 수 있습니다.

### 변경

- 가변 길이 입력을 사용하는 모델에서 `inferSpeedrun`을 실행할 때 더 이상 비정상 종료되지 않습니다.
- `inferAsync` API에서 발생하던 문제를 수정했습니다.
- `Model::releaseBuffer()`를 호출하지 않은 경우에도 `Model::dispose()`가 더 이상 3초 동안 대기하지 않습니다.
- Linux에서 추론 및 데이터 전송 성능을 개선했습니다.

### 알려진 문제

- **Windows에서 대형 모델 실행** — 7B LLM을 포함한 일부 대형 모델이 Windows에서 실행되지 않을 수 있습니다. 수정 작업이 진행 중이며 v1.3.2에 포함될 예정입니다.

## v1.2.0

**출시일:** 2026년 4월 2일
**유형:** Minor

Batch LLM 지원이 추가되었습니다.

### 추가

- **BatchParam** — Batch LLM 추론을 위한 새 구조체 {doxylink}`BatchParam <mobilint::BatchParam>`. 추론 시 각 배치에 필요한 정보를 담습니다:
    - `sequence_length` : 각 배치의 시퀀스 길이.
    - `cache_size` : 각 배치가 사용할 캐시 크기.
    - `cache_id` : 각 배치의 캐시 식별자. 동일한 컨텍스트의 모든 입력은 같은 캐시 ID를 사용해야 하며, 값은 모델이 지원하는 최대 배치 수 이내여야 합니다.

  Batch LLM을 사용하려면 여러 입력을 하나로 이어 붙인 뒤 — 형상이 `(1, seq_len, hidden_dim)`일 때 `seq_len` 차원 기준 — 각 입력에 대한 `BatchParam`을 전달합니다:

  ```python
  import qbruntime
  import numpy as np

  ## 모델이 지원하는 최대 배치 수를 확인합니다.
  print(model.get_cache_infos()[0].num_batches)

  ## 입력을 2번째 차원(axis=1)으로 이어 붙입니다.
  batch_input = np.concatenate([input0, input1], axis=1)

  ## qbruntime.BatchParam(sequence_length, cache_size, cache_id)
  batch_params = [
      qbruntime.BatchParam(10, 0, 0),
      qbruntime.BatchParam(80, 0, 1),
  ]
  res = model.infer([batch_input], params=batch_params)

  batch_params2 = [
      qbruntime.BatchParam(1, 10, 0),
      qbruntime.BatchParam(1, 80, 1),
  ]
  res = model.infer(res, params=batch_params2)
  ```

### 알려진 문제

- ARM(aarch64) 환경에서 LLM 모델 실행 시 "Bus Error"가 발생할 수 있습니다. v1.1.0부터 존재하는 문제이며, 드라이버 패치가 예정되어 있습니다.

## v1.1.0

**출시일:** 2026년 3월 23일
**유형:** Minor

자동 코어 모드 선택, 데이터 타입 조회 API, 성능 최적화가 포함되었습니다.

### 추가

- **`CoreMode::Auto`** — 런타임이 MXQ에서 사용 가능한 코어 모드를 자동으로 선택합니다. `ModelConfig`에 `CoreMode::Auto`를 설정하면(기본 생성자도 이미 Auto 사용) `Multi`, `Global4`, `Global8` 같은 비기본 모드를 수동으로 구성할 필요가 없습니다. {doxylink}`setAutoCoreMode() <mobilint::ModelConfig::setAutoCoreMode()>` 참고.
- `getModelInputDataType()` / `getModelOutputDataType()` — 런타임에 모델 입력/출력 데이터 타입을 조회합니다.
- `getAvailableDeviceNumbers()` — 사용 가능한 NPU 디바이스 번호 목록을 가져옵니다.

```{note}
`scheme="all"`처럼 여러 코어 모드를 생성하는 플래그로 컴파일된 MXQ는 기존과 같이 코어 모드를 수동으로 선택해야 합니다.
```

### 변경

- REGULUS에도 v1.0.0에서 도입된 동적 할당 방식이 적용되어 일관된 사용 패턴을 제공합니다.
- Windows에서 NPU 디바이스로의 데이터 전송 성능을 개선했습니다.
- 내부 타입 변환을 최적화했습니다.
- GCC 9 미만에서 `std::filesystem`으로 인한 컴파일 오류를 수정했습니다.
- 특정 모델에서 간헐적으로 발생하던 데드락을 수정했습니다.
- **[Breaking]** 지원되는 REGULUS 드라이버 리비전이 REV0에서 REV1로 변경됩니다.

### 알려진 문제

- ARM(aarch64) 환경에서 LLM 모델 실행 시 "Bus Error"가 발생할 수 있습니다. 드라이버 패치가 예정되어 있습니다.

```{seealso}
전체 변경 이력은 [Changelog](CHANGELOG.md) 페이지를 참고하세요.
```

## v1.0.0

**출시일:** 2026년 1월 31일
**유형:** Major

확장성, 일관성, 그리고 향후 확장을 위한 구조 개편에 중점을 둔 메이저 릴리즈입니다. 업그레이드하려면 [마이그레이션 가이드](migration_guide.md)를 따라주세요.

### 추가

- **uint8 추론** — uint8 양자화 모델을 qb Compiler로 컴파일하고 qb Runtime으로 실행할 수 있습니다. uint8 입력을 사용하는 모델의 전처리 시 CPU 부하를 줄여줍니다.
- **액티베이션 슬롯** — `setActivationSlots(int num)`(C++)와 `set_activation_slots(num)`(Python)으로 NPU 추론과 데이터 전송 간 파이프라이닝을 조정합니다. 슬롯이 많을수록 NPU 메모리 사용량은 늘지만 멀티스레드 환경의 처리량이 향상됩니다.

```{note}
캐시를 사용하는 모델(예: LLM)에서는 현재 액티베이션 슬롯 수가 1로 제한됩니다.
```

### 변경

- **[Highlight]** 모델 수 제한 제거 — 최신 qb Compiler(MXQv7)로 컴파일된 모델은 컴파일 시 지정한 코어 모드와 무관하게, 가용 DRAM 범위 내에서 동시에 로드·실행됩니다. 다중 모델 서비스, 서로 다른 코어 모드 혼합 실행, LLM 같은 대형 모델에 도움이 되며 코드 변경이 필요 없습니다.
- **[Breaking]** SDK qb 명칭 통일 — 런타임 라이브러리 `maccel` → **qb Runtime**, 컴파일러 `qubee` → **qb Compiler**. 패키지·헤더·모듈 이름도 이에 맞게 변경되었습니다.

### 삭제

- 레거시 패키지(`mobilint-npu-runtime`, `aries-driver`)는 더 이상 유지보수되지 않습니다. [마이그레이션 가이드](migration_guide.md)를 참고하세요.
