hhkim0729 / elmo

배포용 개인 레포

Home Page:https://elmo-beta.vercel.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


ELMO

Easy LLM Online Model Optimizer

한국어 | English

소개주요 기능프로젝트 구조사용 방법기술 스택기여 방법참고 자료출처 알림


김희현

정하림

프론트엔드 백엔드, AI

소개

인공지능에 대한 배경지식이 없어도 LLM을 학습시켜 나만의 GPT를 만들 수 있는 솔루션 오픈 소스 프로젝트

  • 개발 기간
    • 1차: 2023.08 ~ 2023.09 (4주)
    • 2차: 2023.10 ~ 2023.11 (4주)

1. 개발 배경

  • 부상하는 생성형 인공지능

    최근 자연어 처리 기술은 챗지피티와 같은 서비스를 통해 큰 인기를 얻고 있으며, 다양한 분야에서 사용될 것으로 기대된다.

  • 거대 언어모델(LLM)의 성장과 그 필요성

    IT 대기업들이 거대 언어 모델인 LLM을 출시하며 특화된 성능 개선을 위해 파인튜닝의 필요성을 인식하고 있다. 이에 따라 기업 및 개인 맞춤형 LLM의 성장이 예상된다.

  • LLM의 높은 수요와 어려운 접근 환경

    LLM에 대한 수요는 높아지고 있지만, 대중에게는 접근이 어렵다. 대형 언어 모델은 고가의 GPU가 필요하여 대부분 대기업에서만 개발 가능한 현실이다. 또한 언어 모델을 훈련시키려면 깊은 지식이 요구된다. 이에 따라 간단하게 언어 모델을 파인튜닝할 수 있는 서비스의 필요성이 대두되었다.

  • 소규모 언어모델의 부상

    특정 분야나 목적에 특화된 소규모 언어 모델의 중요성이 강조되고 있다. 이를 통해 하드웨어 비용 없이 특정 분야에 한정된 학습을 가능하게 하고 학습 비용과 시간을 절약할 수 있다. 메타의 연구에 따르면, 파라미터 규모가 적은 모델도 고품질의 학습 데이터와 반복적인 트레이닝으로 큰 모델만큼의 성능을 낼 수 있으며, 인터넷에 공개된 데이터로 훈련하여 개인의 컴퓨터에서도 목적에 맞는 GPT를 만들 수 있다고 강조한다.

2. 개발 목적

  • 맞춤형 AI 모델의 접근성 향상

    LLM 학습은 복잡한 과정을 필요로 하며, 일반인에게는 큰 진입 장벽이 될 수 있다. 이러한 장벽을 낮추기 위해 사용자 친화적인 인터페이스와 서비스를 제공하는 것이 본 프로젝트의 주요 목적이다.

  • 다양한 분야에서의 높은 활용성

    본 프로젝트를 통해 개인과 기업 모두가 다양한 분야에서 LLM을 활용할 수 있도록 지원한다. 예를 들어, 교육 분야에서는 맞춤형 교재나 학습 자료 제작에, 마케팅 분야에서는 고객 데이터 분류와 통찰 도출에 LLM을 활용할 수 있다.

  • 사용자 중심의 서비스 제공으로 인공지능 기술의 대중화

    개인과 기업이 특정 목적에 따라 LLM을 쉽게 파인튜닝하고 활용할 수 있는 플랫폼을 제공하여, 인공지능 기술의 일상화와 대중화를 실현하고자 한다.

3. 활용 분야

  • 교육
    • 학생별 맞춤형 학습 자료, 예제 생성
    • 강의, 과제 내용에 대한 질의 응답
  • 기업
    • 기업의 도메인에 특화된 사내 챗봇 서비스
    • 소규모 기업체의 고객지원 챗봇 서비스
  • 연구
    • 논문 요악과 키워드 추출
    • 사례 연구와 동향 파악

주요 기능

1. 모델 훈련

목적 선택
  • 훈련 목적 선택
    • 질의응답: 질문에 대한 답변 생성
    • 분류: 텍스트 분류
모델 선택
  • pre-trained 모델 선택
    • 모델 목록 표시
    • 모델 다운로드
데이터셋 업로드 데이터셋 컬럼 또는 키 선택
  • 데이터셋 선택
    • JSON, CSV 파일 추가
    • 기존에 업로드한 파일을 다운로드하여 확인
    • 데이터셋 파일에서 훈련용으로 사용할 컬럼 또는 키 선택
파라미터 조정 모델 훈련 과정 모델 훈련 결과
  • 모델 훈련
    • LLM 트레이닝 파라미터 조정
    • 모델 훈련 과정 표시
    • 모델 훈련 결과 저장

2. 모델 관리

이전 훈련 결과
  • 이전 훈련 결과 조회
    • 모델 관계를 트리 구조로 표시
    • 훈련 모델의 메타데이터 표시
  • 이전 모델 훈련 결과 다운로드
    • 가중치 파일 로컬 다운로드
  • 이전 모델에 이어서 훈련하기

3. 모델 테스트

테스트할 모델 선택 채팅 형식 테스트 모델 2개 동시 테스트 및 PDF 업로드
  • 텍스트 생성
    • 사용할 모델 선택: 2개를 선택하여 비교 가능
    • 채팅 형식 테스트
    • PDF 파일을 업로드하여 데이터 보완 가능

프로젝트 구조

image

사용 방법

📋 API 문서

1. 서버

  • Docker 사용:

    docker compose build
    docker compose up --build
  • Docker 없이 사용 1. 패키지 추가를 위한 poetry 설치
    pip install poetry==1.6.0
    1. poetry로 필요한 패키지 설치
    poetry install
    1. Redis & MySQL 준비
    (macOS)
    brew install redis
    
    (Linux -e.g., Ubuntu-)
    sudo apt-get install redis-server
    
    (window)
    you can use WSL or a Redis Windows port.
    
    redis-server redis.conf
    
    sudo apt-get update
    sudo apt-get install mysql-server-5.7
    sudo mysql_install_db
    
    (macOS)
    brew services start mysql@5.7
    # brew services restart mysql@5.7
    
    (Linux)
    mysql.server start
    
    mysql -u root -p
    
    mysql
    **CREATE DATABASE fastapi;
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('fastapi');**
    1. alembic으로 DB 설정
    alembic upgrade head
    1. 서버 시작
    poetry run python3 main.py --env {env} --debug

2. 클라이언트

  1. 패키지 추가를 위한 pnpm 설치

    https://pnpm.io/ko/installation

  2. 필요한 패키지 설치

    pnpm install
  3. 개발 서버 시작

    pnpm run dev

기술 스택

프론트엔드

react Tanstack Query Axios radixui d3.js React Flow TailwindCSS React Icons

typescript vite ESLint Prettier pnpm

백엔드

python hugging face uvicorn gunicorn mysql redis fastapi alchemy Alembic

docker

개발

Git Visual Studio Code

협업

GitHub Notion Figma swagger

기여 방법

프로젝트 지향점

  1. 인공지능의 대중화: Project ELMO는 누구나 쉽게 인공지능 모델을 학습시키고 사용할 수 있도록 지원하는 것을 목표로 합니다.
  2. 사용자 중심: 사용자의 경험을 최우선으로 하여, 누구나 쉽게 접근하고 활용할 수 있는 기능 개발에 집중합니다.

Pull Request 시 따라야할 가이드

  1. 이슈 확인 및 생성: PR을 시작하기 전에, 이미 존재하는 이슈인지 확인해주세요. 해당 내용에 관한 이슈가 없다면 새로운 이슈를 생성해 주세요.
  2. 명확한 커밋 메시지: 커밋 메시지는 한눈에 변경사항을 알 수 있도록 명확하게 작성해주세요. 커밋의 주된 내용은 50자 이내로 요약하며, 세부 내용은 본문에 작성합니다.
  3. 코드 스타일 유지: 기존의 코드 스타일과 포맷을 유지해주세요. 이를 위해 lint 도구나 포맷터를 활용할 수 있습니다.
  4. 문서화: 기능 추가나 수정에 따라 관련 문서도 업데이트 해주세요. 특히 API나 사용법에 관한 변경 사항은 반드시 문서에 반영되어야 합니다.
  5. 리뷰 반영: PR 후 리뷰가 있을 경우, 적극적으로 피드백을 반영하거나 의견을 나눠주세요. 상호 존중하는 커뮤니케이션을 지향합니다.

참고 자료

출처 알림

About

배포용 개인 레포

https://elmo-beta.vercel.app

License:Apache License 2.0


Languages

Language:TypeScript 98.0%Language:CSS 0.9%Language:HTML 0.6%Language:JavaScript 0.4%Language:Shell 0.1%