데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Stable Diffusion: Azure VM에서 AI 기반 이미지 생성의 힘

      broccoli 24.05.03
      1,351 3 1
      DEVOTEE 요약
      ChatGPT와 Azure를 통해 이미지 생성을 실험하고 있으며, Stable Diffusion이라는 독일 뮌헨 대학의 오픈소스 AI 모델을 활용해 텍스트 기반 이미지 합성을 시도하고 있다. Azure VM에 Stable Diffusion을 컨테이너 방식으로 설치하는 방법을 탐색하였고, Ubuntu 22.04 LTS에서 도커를 통해 환경 구축을 시도했다. 비용 관리와 효율적인 이미지 생성을 위해 시간당 약 4천원의 비용을 고려하여 VM 사용을 계획하며, 실험 결과에 대한 반응은 긍정적이었다.
      DEVOTEE 추천 블로그

      ChatGPT를 통해 손쉽게 이미지도 생성하는 시대가 되었다.

      현재 맡고 있는 이프랜드스튜디오 서비스에 이미지 생성을 이용한 실험이 필요하였다. 생성 이미지 결과에 대한 프로젝트 참여자의 반응은 나쁘지 않았다.

      ChatGPT 말고 Azure를 통한 이미지 생성에 대한 방안을 찾아 보았다. 다행히 Azure에서도 ready-made 또는 API 형태로 제공하는 서비스가 있기는 했다.

      하지만, 독자적인 인프라로 구성하여 bulk로 구독료나 이용료를 내지 않는 방법에 대한 궁금증이 생겨 좀 더 찾아 보았다.

      Azure VM에 설치할 수 있으면 사용 시간 관리를 통해 비용을 직접 통제하기가 편리하다.

      Azure VM에 컨테이너 방식으로 Stable Diffusion을 구성할 수 있는 방법이 있어 소개하고자 한다.


      Stable Diffusion이란?

      Stable Diffusion: 독일 뮌헨 대학 CompVis 연구실의 “잠재 확산 모델을 이용한 고해상도 이미지 합성 연구”를 기반하여,

      Stability AI와 Runway ML 등의 지원을 받아 개발된 딥러닝 인공지능 모델로 오픈소스로 공개되어 있다.

      Stable Diffusion은 텍스트 설명을 바탕으로 사실적이고 다양한 이미지를 생성할 수 있는 강력한 AI 모델이다.

      이 모델은 '확산(diffusion)' 기술을 사용하여 이미지에 점진적으로 노이즈를 추가한 뒤, 이 과정을 역으로 학습하여 새로운 이미지를 생성한다.

      이런 과정을 통해 시각적으로 아름답고 의미있는 이미지를 만들어낼 수 있다.

      Stable Diffusion은 방대한 이미지와 텍스트 데이터셋을 학습하여 다양한 시각적 개념을 이해하고 표현할 수 있다.

      이 도구를 활용해서 예술가, 디자이너, 그리고 독특하고 매력적인 이미지를 만들고자 하는 모든 사람들에게 강력한 도구가 되고 있다.


      추천 VM 사양

      • VM Series: NC Series (e.g., NC6)

      • CPU: At least 6 vCPUs

      • GPU: 1 x NVIDIA Tesla K80 or better

      • RAM: 56 GB or more

      • Storage: 340 GB SSD or more

      This specification is based on the general requirements for machine learning tasks and the specific needs of Stable Diffusion, which includes GPU acceleration for efficient processing.

      The NC series in Azure is designed for compute-intensive and network-intensive applications, including deep learning and simulations. The NVIDIA Tesla K80 GPU provides good performance for such tasks.


      Azure에 설치 결과

      image.png

      aop@vm-stable-diffusion-gpu:~$ df -h
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/root       248G  2.2G  246G   1% /
      tmpfs            55G     0   55G   0% /dev/shm
      tmpfs            22G 1016K   22G   1% /run
      tmpfs           5.0M     0  5.0M   0% /run/lock
      /dev/sda15      105M  6.1M   99M   6% /boot/efi
      /dev/sdb1       724G   32K  687G   1% /mnt
      tmpfs            11G  4.0K   11G   1% /run/user/1000


      VM용 OS

      아래는 설치된 OS에 대한 설명이다.

      Ubuntu 22.04 LTS:

      이 Ubuntu 버전은 장기적인 지원, 안정성 및 광범위한 호환 소프트웨어 패키지를 제공합니다.

      Linux를 처음 접하는 사용자에게는 사용자 친화적이고 고급 사용자에게는 충분히 강력합니다.

      Ubuntu의 광범위한 커뮤니티와 문서를 통해 문제 해결이 더 쉬워집니다.

      또한 많은 기계 학습 도구와 라이브러리가 Ubuntu에 대해 테스트 및 최적화되어 Stable Diffusion의 보다 원활한 설치 및 작동을 보장합니다.


      선택 사양에 따른 비용

      비용을 생각하지 않을 수 없다. 구성할 때 한 번 정도를 체크를 해 본다.

      프로젝트 수행할 때 소요되는 비용에 대한 감을 어느 정도 잡을 수 있다. 시간당 4천원이 조금 넘는 비용이 발생한다.

      image.png

      image.png



      도커로 설치 준비

      우분투에 도커 설치 부터 진행한다.

      1. 우분투 시스템 업데이트:

        sudo apt update
        sudo apt upgrade
      2. 도커 패키지 설치를 위한 패키지 관리자 설치:

        sudo apt install apt-transport-https ca-certificates curl software-properties-common
      3. 도커 공식 GPG(GNU Privacy Guard) 키 추가:

        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
      4. 도커 저장소 추가:

        echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"         | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      5. 도커 패키지 설치:

        sudo apt update
        sudo apt install docker-ce docker-ce-cli containerd.io


      도커로 설치 절차 제공 github repo

      GitHub - AbdBarho/stable-diffusion-webui-docker: Easy Docker setup for Stable Diffusion with user-friendly UI

      # 수행 명령어 : 다운로드와 기동
      sudo docker compose --profile download up --build


      설치 후 에러 발생 해소 1

      Error response from daemon: could not select device driver "nvidia" with capabilities: [[compute utility]]

      Install NVIDIA Container Toolkit and restart the docker service #81


      설치 후 에러 발생 해소 2

      Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'

      nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown

      https://pstudio411.tistory.com/entry/Ubuntu-2004-Nvidia%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

      • 우분투 드라이버 설치

        sudo apt install ubuntu-drivers-common

      • ubuntu-drivers devices 명령

      ubuntu-drivers devices
      ERROR:root:aplay command not found
      == /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0004:00/VMBUS:00/47505500-0001-0000-3130-444531444234/pci0001:00/0001:00:00.0 ==
      modalias : pci:v000010DEd00001DB4sv000010DEsd00001214bc03sc02i00
      vendor   : NVIDIA Corporation
      model    : GV100GL [Tesla V100 PCIe 16GB]
      driver   : nvidia-driver-535 - distro non-free recommended
      driver   : nvidia-driver-470-server - distro non-free
      driver   : nvidia-driver-525-server - distro non-free
      driver   : nvidia-driver-418-server - distro non-free
      driver   : nvidia-driver-525 - distro non-free
      driver   : nvidia-driver-535-server - distro non-free
      driver   : nvidia-driver-450-server - distro non-free
      driver   : nvidia-driver-470 - distro non-free
      driver   : nvidia-driver-390 - distro non-free
      driver   : xserver-xorg-video-nouveau - distro free builtin
      • 현재 사용중인 그래픽카드 확인

        lshw -numeric -C display

        lspci | grep -i nvidia

      lshw -numeric -C display
      WARNING: you should run this program as super-user.
        *-display UNCLAIMED
             description: 3D controller
             product: GV100GL [Tesla V100 PCIe 16GB] [10DE:1DB4]
             vendor: NVIDIA Corporation [10DE]
             physical id: 0
             bus info: pci@0001:00:00.0
             version: a1
             width: 64 bits
             clock: 33MHz
             capabilities: cap_list
             configuration: latency=0
             resources: iomemory:100-ff iomemory:140-13f memory:41000000-41ffffff memory:1000000000-13ffffffff memory:1400000000-1401ffffff
        *-graphics
             product: hyperv_drmdrmfb
             physical id: 1
             logical name: /dev/fb0
             capabilities: fb
             configuration: depth=32 resolution=1024,768
      WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
      • 권장 드라이버 자동으로 설치 

        sudo ubuntu-drivers autoinstall

        설치 후 재부팅    sudo reboot now

      • 다시 기동

        sudo docker compose --profile auto up --build


      정리

      Azure VM에 어렵지 않은 방법으로 Stable Diffusion 환경을 구성할 수 있었다.

      GPU가 있어 이미지 생성에는 빠른 속도로 결과를 제공해 준다.

      비용이 걱정이라면 시간당 4천원 정도의 비용을 고려하여 VM을 일정시간만 Auto scheduling을 통해서 사용해 볼 수 있다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      broccoli 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기