일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 티스토리챌린지
- 그래피티
- 독서
- 스트릿
- 윈드서프
- 낙서
- Advanced
- 데이터엔지니어링
- 수원
- 오블완
- clickhouse
- Database
- 데이터베이스
- db
- 책
- Playwright
- query
- 취미
- 행궁동
- SQL
- crawlee
- dbt
- AI
- duckdb
- 스티커
- 인문
- 맛집
- mysql
- 클릭하우스
- Python
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 티스토리챌린지
- 그래피티
- 독서
- 스트릿
- 윈드서프
- 낙서
- Advanced
- 데이터엔지니어링
- 수원
- 오블완
- clickhouse
- Database
- 데이터베이스
- db
- 책
- Playwright
- query
- 취미
- 행궁동
- SQL
- crawlee
- dbt
- AI
- duckdb
- 스티커
- 인문
- 맛집
- mysql
- 클릭하우스
- Python
- Today
- Total
yeznable
[ gradio ] 간단한 AI 모델 서빙을 위한 툴 본문
gradio라는 프로젝트를 소개하고자 한다. 아래의 링크는 공식 홈페이지다.
Gradio
Build & Share Delightful Machine Learning Apps
www.gradio.app
gradio라는 프로젝트를 알게되고 이걸 데이터엔지니어링 카테고리에 넣어야 할지 ai 카테고리에 넣어야 할지 고민이었지만 gradio가 다른 툴들에 비해 더 장점을 가질 수 있는 분야가 ai라고 생각해 ai 카테고리로 글을 작성한다.
간단한 AI모델 서빙을 위한 툴이라고 제목을 적었지만 gradio는 규모가 큰 프로젝트로 공을 들인다면 훨씬 다양한 일에 쓰일 수 있을 것이다.
하지만 그만큼 공들여서 gradio를 다뤄보지 않은 지금 내 입장에서는 "간단한 AI모델 서빙"에 사용했을 때 가장 적은 노력으로 가장 큰 퍼포먼스를 보여줄 수 있는 툴이라는 인상이다.
gradio를 처음 봤을 때 바로 떠올라 비교하게 되는 것은 streamlit이다.
둘을 비교했을 때 gradio에 더 장점이 있다고 생각되는 부분을 정리 해본다.
간단한 인터페이스 생성 기능
gradio에서 Interface 기능을 활용하면 위와 같은 4종류의 인풋 아웃풋 폼을 간단하게 생성할 수 있다.
streamlit으로 만들려면 input 박스, output 박스, 버튼 등에 대해 각각 정의해야 하는 것에 비해 input, output 형식이 어떻게 될 것이고 intput을 Submit 했을 때 실행할 함수만 정의해서 전달하면 완성되기 때문에 편하다.
해당 함수에 ai 모델을 적용하면 모델 서빙이 가능하다.
아래의 공식 Documentation 페이지에서 자세한 내용을 볼 수 있다.
Four Kinds Of Interfaces
A Step-by-Step Gradio Tutorial
www.gradio.app
위 링크에서 소개한 Standard demos 하나만 보자면 아래와 같은 짧은 코드로 꽤 완성도 있는 폼이 생성된다.
import numpy as np
import gradio as gr
def sepia(input_img):
sepia_filter = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
sepia_img = input_img.dot(sepia_filter.T)
sepia_img /= sepia_img.max()
return sepia_img
demo = gr.Interface(sepia, gr.Image(), "image")
demo.launch()
다양한 컴포넌트
gradio는 다양한 컴포넌트들을 제공한다. gradio의 컴포넌트 종류는 아래 링크에서 확인할 수 있다.
Gradio Docs
Gradio docs for using
www.gradio.app
ai 모델은 정형화된 값만 활용하는 것이 아니라 사진, 오디오, 웹캠, 채팅 등의 입력을 받아 동작하는 경우가 많아 이렇게 다양한 input, ioutput 컴포넌트가 간단히 지원되는 gradio를 활용하면 ai 모델 서빙이 편리해질듯 하다.
쉬운 공유
gradio로 작성된 화면을 실행하면 다음과 같이 실행되며 실행된 로컬 머신에서 http://127.0.0.1:7860 주소로 접속할 수 있다.
이때 launch(share=True)로 설정해 실행하면 실행 결과가 다음과 같이 변하고 여기서 안내된 링크로 접속하면 로컬 머신이 아닌 외부에서도 gradio로 작성된 화면에 접근할 수 있다.
해당 링크는 1주일 뒤에 만료되어 사용할 수 없게 되지만 잠깐 사용하기에 충분한듯 하다.
위의 3가지 관점에서 streamlit보다 강점이 있는 gradio에 대해 알아봤다.
내가 더 알아보지는 못했지만 이것 외에도 다른 서비스에서 불가능한 것은 아니지만 gradio가 월등히 간편하게 제공하는 기능들이 있는것 같다.
언젠가 쓰게될지는 모르겠지만 알아두면 좋을듯
'하는 일 > ai' 카테고리의 다른 글
[ MCP ] ChatGPT + MCP 서버 (0) | 2025.06.05 |
---|---|
[ 따라잡기 ] Claude with MCPs (1) - 실습 후기 (0) | 2025.04.03 |
[ 따라잡기 ] Claude with MCPs (0) - 소개 (0) | 2025.04.02 |
[ Windsurf ] 윈드서프 파이썬 프로젝트에 이용해보기 (2) - Cascade랑 놀기 (0) | 2025.01.26 |
[ Windsurf ] 윈드서프 파이썬 프로젝트에 이용해보기 (1) - AI 어시스턴트 모델 선택 (0) | 2025.01.26 |