웹 응용 프로그램에서 기계 학습 기능 가져오기

2910 단어 WebML비동기tech

개시하다


팀 개발은 웹 응용 프로그램에서 기계 학습 기능을 편입하는 임무가 있기 때문에 비망록으로 정리한다.
이번 기계 학습 임무는aws의sqs와lambda에서의bert가 문장에 대한 적극적이고 소극적인 판정이다.

개요


나는 기계 조립 학습 임무를 수행할 때 문제가 생기는 것은 추론 시간이라고 생각한다.
일반적으로 API 서버에서 동기화 작업을 수행하면 시간 초과가 발생할 수 있습니다.
따라서 메시지ingqueue에 들어가면 lambda로 처리하고db를 업데이트하여 비동기 처리를 수행합니다.

아키텍처


생략하고 대체적인 구조는 다음과 같다.

api 서버


API의 서비스는 app runner이며, NestJS에서 다음과 같이 API(graphiql)를 구축합니다.
resolver에서 이 서비스를 직접 호출합니다.
import { SQSClient, SendMessageCommand } from '@aws-sdk/client-sqs';
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Message } from './dto/Message';

@Injectable()
export class SqsService {
  private readonly sqsClient: SQSClient;
  private readonly SQS_QUEUE_URL: string;
  constructor(private readonly configService: ConfigService) {
    this.SQS_QUEUE_URL = this.configService.get('SQS_QUEUE_URL', '');
    this.sqsClient = new SQSClient({ region: this.configService.get('SQS_REGION') });
  }
  async publishToQueue(message: Message) {
    const command = new SendMessageCommand({
      QueueUrl: this.SQS_QUEUE_URL,
      MessageBody: JSON.stringify(message),
      MessageGroupId: message.id,
    });
    return await this.sqsClient.send(command);
  }
}

Messaging Queue


메시지 대기열 (MQ) 은 비동기 처리를 가능하게 하는 통신 수단으로 제품에서 MQ에 메시지를 기록합니다.정보는 대기열에 누적되어 consuumer 쪽에서 정보를 받고 처리를 시작합니다.
MQ에도 rabbit MQ 등 오픈소스가 있는데 이번에는 awssqs를 사용했다.

Lambda


사건을 sqs로 촉발한 블리시는 블리시가 발생할 때 불이 납니다.
lambda의 deproy에 대해 ECR에 docker 이미지를 주고 그것을 사용합니다.
lambda에서python은 다음과 같은 내용을 실현했다.
from __future__ import annotations
import json
from core.task import task

def handler(event, context) -> str:
    params = json.loads(event['Records'][0]['body'])
    input_text: str = params['content']
    positive_degree: int = task(input_text) # ポジネガ判定
    post_request() # APIにrequest投げる

task로 양과 음 판정을 진행한다.(학습이 끝난 BERT를 사용했기 때문에 이번에는 사랑하지 않겠다.)
task를 처리한 후 API를 두드려서db의positive/negaive 열을 업데이트하십시오.
대형 모델을 사용할 때는 메모리, 효과 저장과 시간 초과가 좀 길어야 한다.
또한parameter store에서 신용장 정보를 끌어온 경우 적절한 역할을 먼저 해주세요.

총결산


본고는 웹 응용 프로그램에서 기계 학습 기능을 도입하는 방법을 소개했다.
모델링과 예측 등에도 활용할 수 있다.

참고 문헌

  • MQ
  • sqs
  • 좋은 웹페이지 즐겨찾기