Skip to content

boostcampaitech5/level3_nlp_finalproject-nlp-09

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Lec & Rec: ๋ˆ„๊ฐ€ ๋‚˜ ๋Œ€์‹  ์ˆ˜์—… ์ข€ ๋“ค์–ด์ค˜!

โฌ‡๏ธย ์„œ๋น„์Šค ์›น ํŽ˜์ด์ง€ (ํ…Œ์ŠคํŠธ ์šฉ ID: test, PW: 1234)

http://lecnrec.kro.kr

๐Ÿคท๐Ÿปโ€โ™‚๏ธย Lec & Rec์€ ์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

  • Lec & Rec์€ ๋Š์ž„์—†์ด ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๋ถ„๋“ค์ด ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ด์š”
  • Lec & Rec์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“  ๋ถ„๋“ค์„ ์œ„ํ•ด ํƒ„์ƒํ–ˆ์–ด์š”

๐Ÿคท๐Ÿปโ€โ™€๏ธย Lec & Rec์€ ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?

๋‹น์‹  ๋Œ€์‹  ์ˆ˜์—…์„ ๋“ค์–ด์ค๋‹ˆ๋‹ค.

Lec & Rec์€ ๊ฐ•์˜ ์œ ํŠœ๋ธŒ ๋งํฌ๋‚˜ ์Œ์„ฑ ํŒŒ์ผ์„ ์ž…๋ ฅ ๋ฐ›์•„

1) ๋ชจ๋“  ๋‚ด์šฉ์„ ์ ์€ ์†๊ธฐ๋ณธ 2) ํ•ต์‹ฌ์„ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์•ฝ๋ณธ 3) ์ดํ•ด๋„๋ฅผ ์ฒดํฌํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ํ€ด์ฆˆ๋ฅผ ์ œ๊ณตํ•ด์š”

  • ์œ ํŠœ๋ธŒ ๋งํฌ๋‚˜ ์Œ์„ฑ ํŒŒ์ผ์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ๋จผ์ € ์†๊ธฐ๋ณธ์„ ๋งŒ๋“ค์–ด์š”
  • AI ๋ชจ๋ธ์ด ์†๊ธฐ๋ณธ์œผ๋กœ ์š”์•ฝ๋ณธ๊ณผ ํ€ด์ฆˆ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋ผ์š”
  • ๊ฐ๊ฐ์˜ ๊ฒฐ๊ณผ๋Š” ๋งŒ๋“ค์–ด์ง€๋Š” ์ฆ‰์‹œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์–ด์š”

์ด๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ด์š”.

๋” ํšจ์œจ์ ์ธ ํ•™์Šต์„ ์œ„ํ•ด Lec & Rec์ด ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

  • ํ•œ๋ฒˆ ํ•™์Šต์œผ๋กœ ๋? โŒ
    • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋”๋ผ๋„ ์–ธ์ œ๋ผ๋„ ๋‹ค์‹œ ํ•™์Šตํ•˜์‹ค ์ˆ˜ ์žˆ๊ฒŒ ํžˆ์Šคํ† ๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์š”
  • ์ž์‹ ๋งŒ์˜ ๋…ธํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? โญ•
    • ๋ชจ๋“  ๋‚ด์šฉ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•˜์‹ค ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •, ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์š”
  • ํŒŒ์ผ๋กœ ํ•™์Šตํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? โญ•
    • ์†๊ธฐ๋ณธ, ์š”์•ฝ๋ณธ, ํ€ด์ฆˆ ์›ํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ๊ณจ๋ผ pdf ํ˜•ํƒœ๋กœ ๋‹ค์šด๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์–ด์š”

๊ตฌ๋™ ๋ฐฉ๋ฒ•

์š”๊ตฌ์‚ฌํ•ญ

python 3.10

clone ๋ฐ ์„ธํŒ…

$ git clone https://github.com/boostcampaitech5/level3_nlp_finalproject-nlp-09.git

$ cd level3_nlp_finalproject-nlp-09

$ chmod +x setting.sh
$ ./setting.sh

Frontend setting

frontend/.env.development ์ˆ˜์ •

REACT_APP_BACKEND_SERVER_ADDRESS=<IP์ฃผ์†Œ:ํฌํŠธ๋ฒˆํ˜ธ>

Backend setting

Database setting

$ sudo apt install -y alembic

$ cd backend
$ source .venv/bin/activate

$ alembic init migrations

backend/alembic.ini ์ˆ˜์ •

sqlalchemy.url = sqlite:///./project.db

backend/migrations/env.py ์ˆ˜์ •

import sys
sys.path.append('../backend')
import models
...
...
target_metadata = models.Base.metadata
$ alembic revision --autogenerate
$ alembic upgrade head

backend/secret.py ์ˆ˜์ •

JWT_SECRET_KEY = <์ž„์˜์˜ ๋ฌธ์ž์—ด>
JWT_ALGORITHM = <์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜> # ex) HS256, AES128
OPENAI_API_KEY = <openai api key>
PORT = <ํฌํŠธ๋ฒˆํ˜ธ>

ํ”„๋กœ์ ํŠธ ์‹คํ–‰

# backend ์‹คํ–‰
$ python main.py

# frontend ์‹คํ–‰
$ cd ..
$ cd frontend
$ sudo npm start


๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆย ํŒ€ ๊ตฌ์„ฑ ๋ฐ ์—ญํ• 

Untitled


โญย ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

Untitled


๐Ÿ”งย ํ…Œํฌ ์Šคํƒ

์ž์—ฐ์–ด์ฒ˜๋ฆฌ ๋ชจ๋ธ๋ง

Untitled

ํ”„๋กœ๋•ํŠธ ์„œ๋น™

Untitled




โณย ํ”„๋กœ์ ํŠธ ํƒ€์ž„๋ผ์ธ

Untitled




๐Ÿง ย ์ž์—ฐ์–ด์ฒ˜๋ฆฌ ๋ชจ๋ธ๋ง

๐Ÿ”Šย ์Œ์„ฑ ์ „์‚ฌ๋ณธ ์ƒ์„ฑ: Whisper (OpenAI API)

Untitled

[๋ชฉํ‘œ]

์Œ์„ฑ ํ’ˆ์งˆ ๋Œ€๋น„ ๊ฐ•๊ฑด์„ฑ / ์ „๋ฌธ ์šฉ์–ด ์ธ์‹ ์ •ํ™•๋„ / ๋น ๋ฅธ ์ถ”๋ก  ์†๋„

[๋ชจ๋ธ ํ•™์Šต]

  • OpenAI Whisper API๋ฅผ ์ด์šฉํ•œ ์ถ”๋ก  ์‚ฌ์šฉ

[๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •]

  • Whisper large-v2 ๋ชจ๋ธ ์ถ”๋ก ์‹œ ๊ฐ•๊ฑด์„ฑ๊ณผ ์ •ํ™•๋„๊ฐ€ ํ™•๋ณด๋˜๋‚˜, ์ถ”๋ก ์— ์Œ์„ฑ ํŒŒ์ผ ์‹œ๊ฐ„์˜ 1/4๊ฐ€ ์†Œ์š”๋˜๋Š” ๋ฌธ์ œ(1์‹œ๊ฐ„ ์Œ์„ฑ โ†’ 15๋ถ„ ์ถ”๋ก )
    • ๋™์ผ ์„ฑ๋Šฅ์— ๋น ๋ฅธ ์ถ”๋ก  ์‹œ๊ฐ„ ํ™•๋ณด ๊ฐ€๋Šฅํ•œ OpenAI API ์‚ฌ์šฉ ๊ฒฐ์ •
    • GPU ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์Œ์„ฑ์„ ์ฒญํ‚นํ•˜์—ฌ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋กœ ์ž‘์—… ํ›„ ์žฌ์กฐํ•ฉ
  • ์†๊ธฐ๋ณธ ๋ฌธ์žฅ์— ๋งˆ์นจํ‘œ๊ฐ€ ์ œ๋Œ€๋กœ ํ‘œ๊ธฐ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ(์ดํ›„ ์š”์•ฝ ๋ชจ๋ธ ์ž…๋ ฅ ์‹œ ์ „์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๋ถ€ํ˜ธ ํ‘œ๊ธฐ ํ•„์š”)
    • ์†๋„๊ฐ€ ๋น ๋ฅธ KoBART ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์„ ํ†ตํ•ด ๋งˆ์นจํ‘œ ํ›„์ฒ˜๋ฆฌ ํ•™์Šต

[๊ฒฐ๊ณผ]

  • 1์‹œ๊ฐ„ ์Œ์„ฑ ๊ธฐ์ค€, 1๋ถ„ ๋‚ด๋กœ ๋†’์€ ์ •ํ™•๋„์˜ ์†๊ธฐ๋ณธ ๋„์ถœ
  • 1์‹œ๊ฐ„ ์Œ์„ฑ ๊ธฐ์ค€, 2๋ถ„ ๋‚ด๋กœ ํ›„์ฒ˜๋ฆฌ ํ›„ DB ์—…๋ฐ์ดํŠธ ๋ฐ ์š”์•ฝ ๋ชจ๋ธ ์ „๋‹ฌ


๐Ÿ“ ์š”์•ฝ๋ณธ ์ƒ์„ฑ: T5-based (PKO-T5)

Untitled

[๋ชฉํ‘œ]

ํ•ต์‹ฌ ๋‚ด์šฉ ์ถ”์ถœ / ์š”์•ฝ๋ฌธ ๊ฐ€๋…์„ฑ / ๊ตฌ์–ด์ฒด๋ฅผ ๋ฌธ์–ด์ฒด๋กœ

[๋ชจ๋ธ ํ•™์Šต]

  • ํ•œ๊ตญ์–ด T5 ๋ชจ๋ธ paust/pko-t5-large
  • AI Hub์˜ ๋ฐฉ์†ก ์ฝ˜ํ…์ธ  ๋Œ€๋ณธ ์š”์•ฝ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ
  • IN: Passage / OUT: Summary

[๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •]

  • ๋ฌธ๋‹จ ๊ตฌ๋ถ„ ์—†๋Š” ๊ธด ์†๊ธฐ๋ณธ์„ ์š”์•ฝ ๋ชจ๋ธ์— ํ•œ ๋ฒˆ์— ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ
    • ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ๋‹จ์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๋ถ„๋ฆฌ๋œ ๋ฌธ๋‹จ์„ ์š”์•ฝ ๋ชจ๋ธ์— ์ฃผ์ž…
  • ์š”์•ฝ ๋ฌธ์žฅ์ด ํ•„์š” ์ด์ƒ์œผ๋กœ ์งง์•„์ง€๊ณ , ๊ธ€์˜ ๊ฐ€๋…์„ฑ์ด ์ €ํ•˜๋˜๋Š” ๋ฌธ์ œ
    • ์ˆ˜์ง‘ ๋ฐ์ดํ„ฐ์—์„œ ์š”์•ฝ ๊ธธ์ด๊ฐ€ ๊ธด ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•ด ํ•™์Šต
    • ๊ฐ•์˜ ํŠน์„ฑ์— ๋งž๋Š” ๊ตฌ์–ด์ฒด ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต

[๊ฒฐ๊ณผ]

  • 1์‹œ๊ฐ„ ๋ถ„๋Ÿ‰ ์˜์ƒ ๊ธฐ์ค€ ์•ฝ 20๊ฐœ ๋‚ด์™ธ์˜ ๋ฌธ๋‹จ ์ƒ์„ฑ
  • ์ ์ ˆํ•œ ๊ธธ์ด์™€ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ํ•จ์ถ•์ ์œผ๋กœ ํฌํ•จํ•œ ๋ฌธ์–ด์ฒด ์š”์•ฝ ์ƒ์„ฑ


๐Ÿ’ฏ ํ€ด์ฆˆ ์ƒ์„ฑ: T5-based (mT5)

Untitled

[๋ชฉํ‘œ]

์ฃผ์š” ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ํ€ด์ฆˆ ์ƒ์„ฑ / ๋ฌธ์ œ์˜ ๋‹ค์–‘์„ฑ ํ™•๋ณด

[๋ชจ๋ธ ํ•™์Šต]

  • ๋‹ค๊ตญ์–ด T5 ๋ชจ๋ธ google/mt5-large
  • KLUE (MRC)์™€ SQuAD-Kor-V1์—์„œ Wikipedia ์ถœ์ฒ˜์ธ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ
  • IN: Context / OUT: Question + [SEP] + Answer

[๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •]

  • ํ•˜๋‚˜์˜ ๋ฌธ๋‹จ์— ์—ฌ๋Ÿฌ ์„ธ๋ถ€ ์ฃผ์ œ๊ฐ€ ๋‹ด๊ฒจ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋™์ผ ๋ฌธ๋‹จ์€ ๋™์ผ ํ€ด์ฆˆ๋งŒ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅ
    • Beam search์˜ ๋ฒ”์œ„๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ ์งˆ๋ฌธ์˜ ๋‹ค์–‘์„ฑ ํ™•๋ณด ์‹œ๋„
  • Beam search๋กœ ๋„์ถœ๋œ ๋‹ค์ค‘ ๊ฒฐ๊ณผ๊ฐ€ ์งˆ๋ฌธ๊ณผ ๋‹ต์ด ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ
    • ํฌํ•จ ๊ด€๊ณ„์— ๋Œ€ํ•œ rule-based ํ›„์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ€ด์ฆˆ ํ€„๋ฆฌํ‹ฐ ํ™•๋ณด

[๊ฒฐ๊ณผ]

  • 1๊ฐœ์˜ ์š”์•ฝ ๋ฌธ๋‹จ์— ๋Œ€ํ•ด ์ตœ๋Œ€ 3๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ€ด์ฆˆ ์ œ๊ณต
  • 1์‹œ๊ฐ„ ์Œ์„ฑ ๊ธฐ์ค€, ์•ฝ 20~30๊ฐœ์˜ ํ€ด์ฆˆ ์ œ๊ณต ๊ฐ€๋Šฅ


๐Ÿฝ๏ธย ํ”„๋กœ๋•ํŠธ ์„œ๋น™

๐Ÿ”†ย ํ”„๋ก ํŠธ์—”๋“œ: React

[๋ชฉํ‘œ]

  • ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์„ ํ†ตํ•œ ์œ ์ง€ ๋ณด์ˆ˜ ์šฉ์ด
  • ์š”์ฒญ ๋ฐฉ์‹์˜ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•œ UI/UX ๊ฐœ์„ 
  • Single Page Application์„ ํ†ตํ•œ ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋‹จ์ถ•

[๊ณผ์ •]

  • ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ž‘์„ฑํ•˜๋‹ˆ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง
    • ๋ฉ”์ธ ํŒŒ์ผ์„ ์ด ์„ธ ๊ฐœ์˜ ์„œ๋ธŒ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ
  • Long polling์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์„ฑ ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ
    • Short polling ์ด์šฉ
  • ๊ณตํ†ต๋ถ„๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ผ์šฐํŒ…์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ Single Page Application์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
    • ์ค‘์ฒฉ ๋ผ์šฐํŒ…์„ ๋„์ž…ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ํ†ตํ•ฉ

[๊ฒฐ๊ณผ]

  • ๋ฉ”์ธ ํŒŒ์ผ ๋‚ด์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๊ด€๋ฆฌ, ๋ณ€๊ฒฝํ•˜๊ธฐ ์šฉ์ดํ•ด์ง
  • ์š”์•ฝ๋ณธ, ํ€ด์ฆˆ๊ฐ€ ์ƒ์„ฑ ๋˜๋Š” ๋™์•ˆ ์ƒ์„ฑ๋œ ์†๊ธฐ๋ณธ ๋ฐ ์ด์ „ ํžˆ์Šคํ† ๋ฆฌ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ผ์šฐํŒ…์‹œ ์ „์ฒดํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋˜์ง€ ์•Š์•„ ๋กœ๋”ฉ ์‹œ๊ฐ„ ๋‹จ์ถ•

๐ŸŒ™ย ๋ฐฑ์—”๋“œ: FastAPI + SQLite

[๋ชฉํ‘œ]

  • ์—…๋กœ๋“œ ์ดํ›„ ์‚ฌ์šฉ์ž์˜ ๋Œ€๊ธฐ์‹œ๊ฐ„ ๊ฐ์†Œ
  • ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ ์ฆ๋Œ€์™€ ๊ณผ๊ฑฐ ๊ธฐ๋ก ๊ด€๋ฆฌ ์šฉ์ด์„ฑ ํ™•๋ณด
  • ์„œ๋น„์Šค ๋ณด์•ˆ์„ฑ ํ–ฅ์ƒ

[๊ณผ์ •]

  • ์†๊ธฐ๋ณธ, ์š”์•ฝ๋ณธ, ํ€ด์ฆˆ ์ƒ์„ฑ์ด ๋ชจ๋‘ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜ํ™˜ ์ง€์—ฐ
    • ์†๊ธฐ๋ณธ ์ƒ์„ฑ ํ›„ ๋ฐ˜ํ™˜
    • ์š”์•ฝ ๋ฐ ํ€ด์ฆˆ ์ƒ์„ฑ์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰
  • ๊ณผ๊ฑฐ ๊ธฐ๋ก ์—ด๋žŒ ๋ฐ ์ˆ˜์ • ํ•„์š”
    • User, History, QnA ์„ธ ๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ DB ๊ตฌ์ถ•
  • URL์„ ํ†ตํ•œ ๋‹ค๋ฅธ ๊ณ„์ • ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ ํ–ˆ์Œ
    • POST ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด URL์„ ํ†ตํ•œ ์ ‘๊ทผ ์ฐจ๋‹จ
    • Json Web Token๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™”

[๊ฒฐ๊ณผ]

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰์„ ํ†ตํ•œ ๋Œ€๊ธฐ์‹œ๊ฐ„ 60% ๊ฐ์†Œ
  • ๊ณผ๊ฑฐ ๊ธฐ๋ก์˜ ์ž์œ ๋กœ์šด ์ˆ˜์ • ๋ฐ ์‚ญ์ œ๋ฅผ ํ†ตํ•œ UX ํ–ฅ์ƒ


๐ŸŒย ์„œ๋น„์Šค ๋ฐฐํฌ: Google Cloud Platform + GPU Server (V100)

  • GCP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ์‹คํ–‰
  • AI Stage ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ์ถ”๋ก  ๋ฐ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์‹คํ–‰