redis-server 설치 후 redis AI 를 빌드한 뒤 redis-server 에 얹어서 시작하는 방식이다.
$ wsl --install
$ sudo apt update
$ sudo apt install redis-server
$ sudo service redis-server start
$ redis-cli ping
$ cd ~
$ git clone --recurse-submodules https://github.com/RedisAI/RedisAI.git ~/redis-inference-optimization
Done. 메시지가 나오면 성공~
$ cd redis-inference-optimization
$ bash get_deps.sh
$ sudo apt install make
$ sudo apt install -y build-essential cmake git python3 python3-pip unzip curl wget
$ mkdir build
$ cd build
$ cmake .. -DBUILD_ORT=ON
$ make clean
$ make
$ redis-server --port 6380 --loadmodule ./bin/linux-x64-release/src/redisai.so
$ pip install optimum[onnxruntime] accelerate
cmd 를 관리자 모드로 열어서 권한 문제 해결됨...
from optimum.onnxruntime import ORTModelForCausalLM
from transformers import AutoTokenizer
import os
os.environ["TEMP"] = "C:\\Temp"
os.environ["TMP"] = "C:\\Temp"
hf_token = os.getenv("HUGGINGFACE_API_KEY")
model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_name, token=hf_token)
# ONNX 변환 및 최적화 자동 진행
model = ORTModelForCausalLM.from_pretrained(model_name, from_transformers=True, export=True, token=hf_token)
model.save_pretrained("./tinyllama-onnx")
대충 이런 형태면 된다.
import onnx
model = onnx.load("./onnx-tinyllama/model.onnx")
print("Inputs:")
for input in model.graph.input:
print("-", input.name)
print("\nOutputs:")
for output in model.graph.output:
print("-", output.name)
pip install redis redisai
import redisai as rai
# RedisAI 클라이언트 연결 (RedisAI 모듈이 로드된 Redis 서버)
con = rai.Client(host='localhost', port=6381)
# ONNX 모델 로드
with open("./onnx-tinyllama/model.onnx", "rb") as f:
model_data = f.read()
# 모델 등록 (입력/출력 이름은 실제 ONNX 모델에 따라 변경 필요)
con.modelstore(
"tinyllama", # Redis 키 이름
backend="onnx", # 모델 백엔드
device="cpu", # 또는 "gpu"
data=model_data,
inputs=["input_ids", "attention_mask", "position_ids"], # 실제 입력 이름
outputs=["logits"] # 실제 출력 이름
)