주요 컨텐츠로 이동

제로에서 GenAI 히어로로: HuggingFace와 Databricks를 이용한 GenAI 앱 구축

HuggingFace 모델을 Databricks 도구와 통합하여 GenAI 앱을 쉽게 설계, 훈련, 배포하세요

From Zero to GenAI Hero: Building Your GenAI App with HuggingFace and Databricks

Published: March 26, 2025

솔루션5분 소요

Summary

  • Unity Catalog를 데이터 관리 및 거버넌스에 활용하고, 귀사의 데이터를 Hugging Face 모델과 통합하여 특정 비즈니스 요구에 맞는 맞춤형 GenAI 솔루션을 생성합니다.
  • Databricks Model Serving을 사용하여 사용자 정의 GenAI 모델을 배포하고 관리하며, Unity Catalog와의 원활한 통합 및 오픈 소스 및 타사 모델(포함 Hugging Face의 모델)에 대한 지원을 활용합니다.
  • Databricks Apps를 활용하여 GenAI 애플리케이션을 위한 사용자 친화적인 인터페이스를 직접 Databricks Platform에 생성하고 배포하여 개발 과정을 간소화하고 광범위한 웹 개발 전문 지식의 필요성을 제거합니다.

Databricks는 지난해 Databricks Apps를 소개하여, 사용자가 Databricks 플랫폼에서 직접 애플리케이션을 생성하고 배포할 수 있게 하는 도구 모음을 완성했습니다. Databricks 앱을 사용하면 개발자들은 데이터와 AI 애플리케이션을 더 빠르고, 더 안전하게, 그리고 Databricks Data Intelligence Platform과의 원활한 통합으로 구축하고 실행할 수 있습니다. 인기 있는 프레임워크, 서버리스 배포, 내장된 거버넌스를 지원하는 Databricks Apps는 영향력 있는 AI 솔루션의 개발을 단순화하고 가속화하도록 설계되었습니다.

이 가이드에서는 GenAI와 Unity Catalog의 힘을 활용하여 비즈니스를 변화시킬 수 있는 맞춤형 AI 애플리케이션을 구축하고 배포하는 방법을 보여드리겠습니다. Hugging Face 모델, Unity 카탈로그, 모델 서빙, 그리고 Databricks 앱을 사용하여 고급 웹 앱 개발 경험이 없어도 제작 및 배포 가능한 GenAI 애플리케이션을 만드는 방법을 안내하겠습니다. 이 튜토리얼을 마치면 Unity 카탈로그의 데이터 잠재력을 활용하고, 복잡한 AI 모델을 생산성과 혁신을 촉진하는 실용적인 비즈니스용 애플리케이션으로 전환하는 방법을 배울 수 있습니다.

예를 들어, 우리는 사진과 텍스트 프롬프트라는 두 가지 입력을 결합하는 GenAI 애플리케이션을 만들었습니다. 생성적 AI의 힘을 활용하여, 애플리케이션은 프롬프트에 따라 원본 이미지를 변형하여 독특하고 맞춤화된 시각적 출력을 생성했습니다.

아래 섹션에서는 단계별로 과정을 안내하겠습니다:

  • Unity Catalog에서 관리하는 볼륨에 이미지 로드하기
  • MLflow를 사용하여 Unity 카탈로그에 Hugging Face 모델 등록
  • 모델 서빙을 통한 모델 배포
  • Databricks 앱 개발 및 모델 임베딩

참고: Databricks Apps는 현재 Public Preview 단계에 있으며 아직 귀하의 지역에서 사용할 수 없을 수 있습니다. 사용 가능 여부는 여기에서 확인하세요.

예제 이미지를 볼륨에 로드하세요:

Databricks에서, 볼륨은 Unity 카탈로그 객체로서 파일, 이미지, 문서와 같은 비테이블 데이터에 대한 관리된 저장소를 제공합니다. 이것은 조직이 중앙 집중식 거버넌스와 통제를 유지하면서 다양한 유형의 데이터를 안전하게 저장, 접근, 공유할 수 있게 해줍니다.

예시를 위해, 우리는 Hugging Face에서 이미지를 다운로드하고 이미지를 조작하기 때문에 Databricks 볼륨에 저장할 것입니다:

예시 이미지는 아래와 같습니다:

HuggingFace
Our example image downloaded from HuggingFace

HuggingFace에서 모델을 Unity 카탈로그에 MLflow로 등록하세요:

먼저, 프롬프트와 입력 이미지를 기반으로 이미지를 생성할 수 있는 HuggingFace의 모델을 선택해야 합니다. Kandinsky 2-2 디코더 모델을 선택해봅시다 (https://huggingface.co/docs/diffusers/en/using-diffusers/img2img#image-to-image).

다음으로, MLflow를 사용하여 우리의 모델을 Unity 카탈로그에 등록할 수 있습니다. 우리는 사용자 정의 클래스를 생성하는 데 MLflow pyfunc 플레이버를 사용할 것입니다. 이 클래스는 우리의 모델 래퍼로 사용될 것입니다:

우리는 이미지를 인코딩하고 디코딩하는 두 가지 함수 (image_to_base64base64_to_image)를 클래스에 추가했습니다. 이것은 우리가 배포된 모델에 입력을 제출하기 위해 PIL 이미지를 JSON 으로 파싱할 수 없기 때문에 필요합니다.

클래스를 준비한 후, 우리는 모델을 Unity Catalog에 로그하고 등록할 것입니다. 모델은 매개변수, 프롬프트, 이미지를 포함하는 DataFrame을 입력으로 예상합니다. 우리는 이전에 업로드한 사진을 사용하여 볼륨에 입력 예제를 만들었습니다.

우리의 모델을 Unity 카탈로그에 등록한 후, 이제 Model Serving을 통한 중요한 배포 단계를 다룰 준비가 되었습니다. 다음 섹션에서는 모델을 실시간 예측 요청을 처리할 수 있는 생산 준비 서비스로 변환하는 방법을 안내합니다.

Model Serving을 사용하여 모델 배포:

Databricks의 Model Serving은 머신러닝 모델을 REST API로 배포할 수 있게 해주는 완전히 관리되는 서비스입니다. 이를 통해 기본 인프라나 스케일링에 대해 걱정하지 않고 실시간 예측을 쉽게 이용할 수 있습니다. 더 자세한 정보를 원하신다면, 이 링크에서 사용 가능한 자료를 참조해주세요.

Unity 카탈로그에 등록된 모델을 모델 서빙을 통해 배포합니다:

  • 수동으로, UI를 사용하여: Unity Catalog에서 모델로 이동하고 "이 모델 서비스하기"를 클릭합니다
  • 또는, 아래 코드에서 보여주는 것처럼 API를 통해 할 수도 있습니다.

모델 서빙 엔드포인트의 구축 과정이 시작됩니다. 일단 실행되면, 우리는 "Model Serving" 섹션으로 이동하고 엔드포인트를 클릭하여 연결 세부 정보를 얻을 수 있습니다.

다음으로, 우리는 Databricks Apps를 생성하기 시작할 수 있습니다.

Databricks 앱 개발

Databricks Apps는 웹 애플리케이션의 생성 및 배포를 단순화하기 위해 설계된 새로운 기능입니다(문서 여기 참조). Databricks 앱을 사용하면, 실무자들이 별도의 인프라를 관리할 필요 없이 Databricks에 이미 존재하는 데이터, 모델, 그리고 거버넌스를 활용하여 애플리케이션을 구축할 수 있습니다. Databricks 앱은 유연성을 제공하여, Dash, Shiny, Gradio, Streamlit, 또는 Flask와 같은 선택한 프레임워크로 앱 프론트 엔드를 구축할 수 있습니다.

페이지를 기반으로 Databricks 플랫폼에서 앱을 생성하기 시작하려면:

  1. Databricks 플랫폼에서 Compute > Apps로 이동합니다.
  2. "앱 생성"을 클릭하세요. 지금은 고급 설정을 비워두세요, 나중에 이 섹션에서 채울 것입니다.

다음으로, 앱 환경을 설정합니다:

  1. 사용자 프로필로 이동하여 앱을 위한 새 폴더를 생성하세요.
    • 이 폴더에는 앱 코드와 추가적인 의존성이 포함됩니다.
  2. 이 폴더에서 생성하세요:
    • main.py라는 파일:
      • main.py에서, 우리는 개인 액세스 토큰(PAT)을 사용하여 모델 서빙 엔드포인트에 액세스하고, 이를 Databricks CLI를 통해 생성된 "secret scope"에서 안전하게 검색합니다.
      • Databricks CLI를 사용하여 비밀을 등록하는 방법에 대한 지침을 찾으려면 여기를 참조하십시오.
    • 파일 이름 requirements.txt:
      • 이 파일은 우리의 코드가 올바르게 작동하는 데 필요한 외부 라이브러리와 패키지를 나열합니다.
      • 이 링크에서 더 자세한 정보를 찾을 수 있습니다

이제 설정을 완료했으므로, 우리의 WebApp에 대한 코드를 작성하는 것을 계속 진행하겠습니다.

애플리케이션의 핵심 구성 요소를 살펴봅시다:

백엔드: Unity 카탈로그 볼륨과의 상호작용 처리

다음 코드는 함수 query_image_from_volume()를 정의하며, 이 함수는 Databricks 볼륨에서 이미지 파일을 검색합니다. 이 함수는 Databricks SDK 를 사용하여 인증하고 이미지 파일을 다운로드한 후, PIL(Python Imaging Library)을 사용하여 이를 열고 RGB 형식으로 변환합니다. 함수는 인증을 위한 비밀 토큰을 포함한 필요한 환경 변수를 설정한 후 이미지를 가져와 처리합니다.

모델 엔드포인트 통합: AI 모델에 대한 예측 쿼리

아래에서는 이미지 생성을 위해 우리의 모델 엔드포인트(이전에 Model Serving으로 배포)에 요청을 준비하고 보내는 함수 query_model_endpoint를 정의합니다. 입력 이미지를 받아서 base64로 변환하고(왜냐하면 PIL 이미지는 JSON으로 직접 직렬화할 수 없기 때문에), 이미지와 프롬프트를 포함한 다양한 매개변수로 DataFrame을 구성하고, 이 데이터를 JSON 페이로드로 모델 엔드포인트 URL에 전송합니다. 마지막으로, 반환된 base64 이미지 데이터를 RGB 이미지 객체로 변환하여 우리의 앱에서 결과를 시각화할 수 있도록 응답을 처리합니다.

모델의 URL은 배포된 모델을 클릭하여 모델 서빙 UI에서 찾을 수 있습니다.

프론트엔드 개발: 백엔드 기능과 모델 쿼리를 사용자 인터페이스에 결합

이 섹션에서는 사용자 입력에 기반한 이미지를 변형하는 우리의 GenAI 앱을 위한 Gradio 인터페이스를 생성합니다. 로고, 제목, 캐릭터 설명을 위한 입력 텍스트 상자, 그리고 변환 전후의 이미지 디스플레이(두 개), 그리고 변환을 실행하고 입력을 지우는 버튼이 있는 레이아웃을 설정합니다. 인터페이스는 사용자 입력을 이전에 정의한 query_model_endpoint 함수에 연결하고, 이 함수는 입력을 처리하고 결과를 생성하여 "After" 이미지 컴포넌트에 표시됩니다.

웹앱에 사진이나 로그를 추가하려면, 같은 디렉토리 내에 사진을 저장할 수 있는 다른 폴더(우리의 코드에서는 "static"라고 불립니다)를 만들 수 있습니다(여기에서는 static/DatabricksLogo_full3.png와 같이 했습니다).

배포: 앱을 실행하고 운영하기

이 코드 스니펫은 일반적으로 Gradio 애플리케이션 스크립트의 끝에서 사용됩니다. 스크립트가 직접 실행되는지 (모듈로서 가져오지 않음) 확인하기 위해 if __name__ == "__main__": 조건을 사용합니다. 참이라면, 데모 객체에서 정의된 Gradio 인터페이스를 실행합니다. 애플리케이션은 처음에 로컬 호스트에서 배포됩니다. 공개 URL을 통해 접근 가능하게 하려면, launch()에 share=True 를 추가해야 합니다.

Databricks 앱이 개발되어 배포 준비가 되었으므로, 우리는 GenAI 모델에 대한 강력하고 상호 작용적인 인터페이스를 성공적으로 만들었습니다. 그러나 그 잠재력을 발휘하기 전에, 중요한 앱 관리 측면인 권한을 처리해야 합니다.

다음 섹션에서는 Databricks 앱 뒤의 서비스 주체에게 필요한 권한을 부여하는 방법을 살펴보겠습니다. 이를 통해 안전하고 효과적으로 기능을 수행할 수 있는 적절한 접근 권한을 보장합니다.

Databricks 앱 권한:

서비스 주체의 이름은 앱 UI의 앱 리소스 섹션에서 찾을 수 있습니다. 일단 확인되면, 다음 권한을 서비스 주체에게 부여하십시오:

  • 개인용 액세스 토큰
    • 서비스 주체가 등록된 토큰에 접근할 수 있도록 읽기 가능 권한을 부여합니다.
    • 링크의 지침을 따라 UI에 직접 액세스 권한을 부여할 수 있습니다:
      • 편집을 클릭하고, 고급 설정, 리소스 유형 "Secret"과 토큰을 등록한 범위와 secret-key를 선택합니다.
      • 앱 코드에서 비밀을 참조하려면, 이름 필드의 값(TOKEN 예시)을 사용하여 구성된 키 값을 참조하고 저장하세요.
  • 볼륨 액세스:
    • 볼륨에 저장된 사진에 액세스할 수 있도록 READ_VOLUME 권한을 부여합니다.
    • 볼륨 UI를 통해:
      • 볼륨에서 권한 을 클릭하고 부여를 선택합니다
  • 모델 서빙 Endpoint
    • 이전에 배포된 모델에 대해 사용 가능 권한을 제공하세요.
    • Model Serving UI를 통해:
      • 모델의 페이지에서 권한을 클릭합니다

웹앱을 배포하려면 웹앱 UI로 이동하고 배포를 클릭하세요. 그런 다음, main.py가 위치한 폴더를 선택합니다. 이렇게 하면 코드가 고립된 컨테이너에 배포됩니다. 애플리케이션의 초기 배포는 몇 분이 걸릴 수 있습니다. 프로세스가 완료되고 상태 표시기가 "실행 중"을 표시하면, 애플리케이션은 완전히 배포되고 운영 가능한 상태입니다.

성공적인 배포 후, Kandinsky 모델을 활용하는 웹 애플리케이션 내에서 완전히 기능하는 대화형 사용자 인터페이스에 액세스할 수 있습니다. 애플리케이션을 시작하려면:

  1. Databricks 작업 공간에서 Compute 섹션으로 이동하세요
  2. 애플리케이션 이름을 찾아 클릭하세요.
  3. "Running" 상태 지시자를 찾습니다
  4. 애플리케이션을 열려면 인접한 링크를 클릭하십시오.

여기에 우리의 Databricks 앱에서의 예제 결과가 있습니다:

Databricks 앱 시작하기

보여드린 것처럼, 단계는 명확하고 간단합니다. 대부분의 작업은 Databricks Intelligence Platform 내에서 이루어지며, 복잡성과 개발 시간을 크게 줄입니다. 이 접근 방식을 통해 전통적인 인프라 관리의 장애물 없이 모델을 빠르고 간단하게 서버리스 웹 애플리케이션에 배포할 수 있습니다.

우리는 이 여정을 마무리하면서 이 도움이 되는 튜토리얼을 찾았기를 바랍니다. 이러한 기능을 더욱 탐색하고 AI 이니셔티브를 어떻게 가속화할 수 있는지 확인하도록 권장합니다. 이 블로그의 도움으로, 모델을 미세 조정하여 앱을 더욱 개인화하고 특정 요구 사항을 충족시킬 수 있습니다. 이런 커스터마이징은 귀사의 요구에 완벽하게 맞춤화된 AI 솔루션을 만들 수 있게 해주며, 이는 비즈니스 프로세스를 혁신하고 혁신을 촉진할 수 있습니다.

여러분이 만들어낼 훌륭한 GenAI 웹 앱을 기대하며, 여러분의 GenAI 웹 앱 구축에 성공을 기원합니다!

 

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요