Next.js에서 머신러닝 모델 서비스화

Next.js는 React 기반의 웹 프레임워크로, 서버 사이드 렌더링(SSR)을 지원하며 빠른 개발과 성능 최적화를 제공합니다. 이번에는 Next.js를 사용하여 머신러닝 모델을 서비스화하는 방법에 대해 알아보겠습니다.

1. 머신러닝 모델 개발

먼저, 머신러닝 모델을 개발하는 단계에서는 주로 Python을 이용하여 모델을 학습시키고 테스트합니다. 여기서는 예시로 Scikit-learn이라는 Python 라이브러리를 사용하도록 하겠습니다.

from sklearn.linear_model import LinearRegression

# 데이터 로드 및 전처리
X = ...
y = ...

# 모델 학습
model = LinearRegression()
model.fit(X, y)

# 모델 저장
model.save('model.pkl')

위 코드는 간단한 선형 회귀 모델을 학습하고 저장하는 예시입니다. 모델을 학습시킨 후에는 해당 모델을 Next.js 애플리케이션에서 사용할 수 있도록 준비해야 합니다.

2. Next.js 애플리케이션 구성

Next.js 애플리케이션을 만들기 위해 다음과 같은 단계를 따릅니다.

2.1. 프로젝트 생성

터미널에서 다음 명령어를 실행하여 Next.js 프로젝트를 생성합니다.

npx create-next-app my-app

2.2. 모델 파일 추가

프로젝트 내에 models 디렉토리를 생성하고, 앞서 학습한 모델 파일(model.pkl)을 해당 디렉토리에 추가합니다.

2.3. 머신러닝 모델 로드

Next.js 애플리케이션에서는 머신러닝 모델을 사용하기 위해 tfjs-node 라이브러리를 설치합니다.

npm install @tensorflow/tfjs-node

다음으로, 모델을 로드하는 함수를 작성합니다.

import * as tf from '@tensorflow/tfjs-node';
import fs from 'fs';

export function loadModel() {
  const buffer = fs.readFileSync('./models/model.pkl');
  return tf.node.loadModel(buffer);
}

위 코드는 tfjs-node 라이브러리를 사용하여 모델 파일을 로드하는 함수입니다.

2.4. API 엔드포인트 작성

Next.js의 api 디렉토리에 새로운 파일을 생성하고, 머신러닝 모델을 사용하는 API 엔드포인트를 작성합니다.

import { loadModel } from '../../utils/model';

export default function handler(req, res) {
  const model = loadModel();
  
  const { input } = req.body;
  
  // 모델 예측
  const output = model.predict(input);
  
  res.status(200).json({ output });
}

위 코드는 API 요청이 들어왔을 때, 머신러닝 모델을 사용하여 입력값에 대한 예측 결과를 반환하는 API 엔드포인트를 구현한 것입니다.

3. 모델 서비스화

마지막으로, 개발된 Next.js 애플리케이션을 서비스로 배포하는 단계입니다. 서비스화를 위해 해당 애플리케이션을 웹 서버에 호스팅하거나 서버리스 환경에서 운영할 수 있습니다.

Next.js 애플리케이션을 Vercel이나 Netlify와 같은 호스팅 플랫폼에 배포하거나, AWS Lambda와 같은 서버리스 환경에서 동작하도록 설정할 수 있습니다.

결론

이제 Next.js에서 머신러닝 모델을 서비스화하는 방법에 대해 알아보았습니다. Next.js의 강력한 SSR 기능과 머신러닝 모델의 예측 기능을 결합하여 강력한 웹 서비스를 개발할 수 있습니다. 자세한 사항은 Next.js 공식 문서 및 TensorFlow.js 문서를 참고하시기 바랍니다.

참고 자료