Skip to content

Latest commit

Β 

History

History
81 lines (49 loc) Β· 4.33 KB

File metadata and controls

81 lines (49 loc) Β· 4.33 KB

μž₯κ³ μ—μ„œ λ¨Έμ‹ λŸ¬λ‹μ„ μ‚¬μš©ν•˜λŠ” 방법

제λͺ© μ—†μŒ-1

μž₯κ³ μ—μ„œ λ¨Έμ‹ λŸ¬λ‹μ„ λŒλ¦¬λŠ”κ²Œ μ’‹μ€μ΄μœ 

μž₯κ³  μ›Ήν”„λ ˆμž„ μ›Œν¬λ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμ—λŠ” μ—¬λŸ¬κ°€μ§€ μ΄μœ κ°€ μžˆκ² μœΌλ‚˜ μž₯고의 메인 언어인 Python을 μ“΄λ‹€λŠ” 점은 μ—„μ²­λ‚œ λ©”λ¦¬νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ Pythonμ—λŠ” ML,AI와 κ΄€λ ¨λœ μ—¬λŸ¬κ°€μ§€ 툴이 μžˆκΈ°λ•Œλ¬Έμž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ μ‹€μ œλ‘œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν• λ•Œ μž₯κ³ μ•ˆμ— λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ 직접 μ΄μ‹ν•˜λŠ” 방식을 ν†΅ν•΄μ„œ ꡳ이 λ”°λ‘œ μ„œλ²„λ₯Ό λ‘λŠ” 것이 μ•„λ‹ˆλΌ, μ‹€μ œλ‘œ μž₯κ³  μ„œλ²„κ°€ λŒμ•„κ°€λŠ” 와쀑에 λ¨Έμ‹ λŸ¬λ‹μ΄λ‚˜ 신경망을 ν†΅ν•œ λͺ¨λΈμ΄ λ°”λ‘œ μ œκ°€ 넣은 값을 ν†΅ν•΄μ„œ λ°”λ‘œ μ˜ˆμΈ‘κ°’μ„ 좜λ ₯ν•΄λ‚Έλ‹€λ©΄ μ €ν¬λŠ” λ‘κ°€μ§€μ˜ 일을 λ™μ‹œμ— ν•˜μ§€ μ•Šμ•„λ„ 되죠.( 예λ₯Ό λ“€λ©΄ 뭐 λ¨Έμ‹ λŸ¬λ‹ μ„œλ²„λ₯Ό 또 λ”°λ‘œ λ§Œλ“ λ‹€λ˜κ°€..)

일단 마주쳀던 문제점

신경망이든 λ¨Έμ‹ λŸ¬λ‹μ΄λ“ κ°„μ— 일단 λͺ¨λΈμ„ λΆˆλŸ¬μ„œ 값을 넣은 후에 그것을 μ˜ˆμΈ‘κ°’μ„ λ°›λŠ” 과정은 λ‹¨μˆœν•˜κ²Œ 신경망을 ν†΅ν•΄μ„œ μ˜ˆμΈ‘ν•˜λŠ” ν”„λ‘œμ νŠΈμ—μ„œλŠ” 크게 λ¬Έμ œκ°€ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” λ‹€μŒκ³Ό 같은 μ›Ήμ„œλ²„μ—μ„œ λͺ¨λΈμ„ λΆˆλŸ¬μ„œ 값을 넣은 후에 그것을 μ˜ˆμΈ‘κ°’μ„ λ°›λŠ” 과정은 λ‹¨μˆœν•˜κ²Œ 신경망을 ν†΅ν•΄μ„œ μ˜ˆμΈ‘ν•˜λŠ” 과정은 μ‹œκ°„ μ†ŒλΉ„κ°€ μ—„μ²­λ‚˜λ‹€λŠ” 게 λ¬Έμ œμž…λ‹ˆλ‹€.

μ›Ήμ„œλ²„μ—μ„œ ν•œ λ²„νŠΌμ„ ν΄λ¦­ν–ˆλŠ”λ°, 5μ΄ˆλ‚˜ 걸리면 μ†”μ§νžˆ 그게 아무리 μ •ν™•ν•œ μ§€ν‘œλΌν•œλ“€... μ‚¬μš©μž μž…μž₯μ—μ„œλŠ” λΆˆνŽΈν•¨μ„ λŠλ‚„ 수 밖에 μ—†μŠ΅λ‹ˆλ‹€. (적어도 μ €λŠ” κ·Έλ ‡κ²Œ μƒκ°ν•©λ‹ˆλ‹€.)

그럼 μ—¬κΈ°μ„œ μ‹œκ°„μ„ 더 쀄일 수 μžˆλŠ” 방법은 λ­˜κΉŒμš”?

λ¨Έμ‹ λŸ¬λ‹μ˜ λŒμ•„κ°€λŠ” 과정은

  1. λͺ¨λΈμ„ λΆˆλŸ¬μ„œ
  2. 값을 넣은 후에
  3. 그것을 μ˜ˆμΈ‘κ°’μ„ λ°›λŠ” κ³Όμ •

이라고 μΆ•μ•½ν•  수 μžˆλŠ”λ° μ‹€μ œλ‘œ 2,3은 λ¨Έμ‹ λŸ¬λ‹μ˜ ꡬ쑰λ₯Ό λ°”κΎΈμ§€ μ•ŠλŠ” 이상 μ‹œκ°„μ„ 쀄일 수 μ—†μŠ΅λ‹ˆλ‹€.

그러면 1. λͺ¨λΈμ„ λΆˆλŸ¬μ˜€λŠ” κ³Όμ •μ˜ μ‹œκ°„μ„ 쀄이면 λ˜μ§€ μ•Šμ„κΉŒμš”?

그럼 μ‹œλ„ ν•΄λ΄…μ‹œλ‹€.

μž₯κ³ μ—μ„œλŠ” λͺ¨λΈ λ‹¨μœ„λ₯Ό

python manage.py startapp ~~~ 와 같은 APP λ²”μ£Όλ‘œ 관리λ₯Ό ν•©λ‹ˆλ‹€. μ΄λ•Œ 이 νŒŒμΌμ—μ„œ μƒμ„±λ˜λŠ” νŒŒμΌμ€‘ ν•˜λ‚˜μΈ

app.pyλ₯Ό μ°Έμ‘°ν•©μ‹œλ‹€. μ‹€μ œλ‘œ app.pyλŠ” μž₯κ³ μ—μ„œλŠ” 크게 관심을 κ°€μ§€μ§€ μ•ŠλŠ” 파트둜 타 μž₯κ³  νŠœν† λ¦¬μ–Όμ—μ„œ 크게 μž‘μ„±ν•˜λŠ” μ½”λ“œκ°€ μ—†λ˜κ±Έλ‘œ κΈ°μ–΅ν•©λ‹ˆλ‹€.

from django.apps import AppConfig
from deep.model import DeepModel

class ShopConfig(AppConfig):
    name = 'shop'
    model = DeepModel()

ν•˜μ§€λ§Œ APP.py에 λ‹€μŒκ³Ό 같이 μž‘μ„±μ„ ν•˜λ©΄, 이 λͺ¨λΈμ„ μž₯κ³  μ‹€ν–‰μ‹œ ν•œλ²ˆλ§Œ 뢈러였게 λ©λ‹ˆλ‹€.

이게 μ–΄λ–€ 의미λ₯Ό κ°€μ§€λŠ”μ§€ λ‹€μŒκ³Ό 같은 예제λ₯Ό μ°Έκ³  ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

  • μ μš©μ „

    μ μš©μ „μ—λŠ” API 호좜 ν•œλ²ˆλ‹Ή λ”₯λŸ¬λ‹ λͺ¨λΈ ν˜Ήμ€ λ¨Έμ‹ λŸ¬λ‹ Model을 직접 λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.

    γ„΄ API 호좜 ν•œλ²ˆ λ‹Ήμ˜ 속도가 정말 였래 κ±Έλ ΈμŠ΅λ‹ˆλ‹€.

 model = DeepModel()
        path_audio = request.FILES['alarm']['file']
        tags = model.extract_info(path_audio, mode='tag', topN=5)
        print(tags)
  • μ μš©ν›„

    적용 ν›„μ—λŠ” API ν˜ΈμΆœμ— 상관없이 이미 μ˜¬λΌκ°€μžˆλŠ” λ”₯λŸ¬λ‹ λͺ¨λΈμ„ κ·ΈλŒ€λ‘œ λ°›μ•„μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.

    γ„΄ λͺ¨λΈμ„ λΆˆλŸ¬μ˜€λŠ” 속도가 κ°μ†Œλ˜μ–΄μ„œ 적용 전에 λΉ„ν•΄μ„œ 훨씬 λΉ λ₯΄κ²Œ μΆ”μΆœλ©λ‹ˆλ‹€.

   data = request.FILES['alarm']
        k = io.BytesIO(data.file.read())
        feat, tag = ShopConfig.model.extract_info(k, mode='both', topN=5)

이런 방식을 또 μ‘μš© ν•  수 μžˆλŠ” 것듀?

μ‹€μ œλ‘œ app.pyλ₯Ό μ‚¬μš©ν•˜λŠ” 방식은 같은 것을 μ—¬λŸ¬λ²ˆ λΆˆλŸ¬μ˜€λŠ” 상황을 λ§‰κΈ°μ—λŠ” 졜적의 ν™˜κ²½μ„ κ°€μ§‘λ‹ˆλ‹€. λ”₯λŸ¬λ‹μ΄λ‚˜ λ¨Έμ‹ λŸ¬λ‹κ³Ό 같이 λͺ¨λΈμ„ λΆˆλŸ¬μ˜€λŠ”λ° 그리고 μ΄ˆκΈ°ν™”ν•˜λŠ”λ°μ— μ‹œκ°„μ΄ 많이 κ±Έλ¦¬λŠ” μ½”λ“œμ²˜λŸΌ. Python λ‚΄λΆ€μ˜ 둜직이 λ³΅μž‘ν•˜μ—¬ μ˜€λž˜κ±Έλ¦¬κ±°λ‚˜ ν•œλ²ˆ μ΄ˆκΈ°ν™” ν•΄λ‘” νŒŒμΌμ„ 계속 μ‚¬μš©ν•˜κ³  싢은 경우 app.pyλ₯Ό μ‚¬μš©ν•˜λ©΄ 될 것 κ°™μŠ΅λ‹ˆλ‹€.

μ°Έμ‘°:

https://medium.com/saarthi-ai/deploying-a-machine-learning-model-using-django-part-1-6c7de05c8d7