본문 바로가기
AI 언어 모델

💡Ollama 로컬 멀티모달 AI: Llama 3.2 Vision 설치 및 활용 가이드

by James AI Explorer 2024. 11. 10.
    728x90

    안녕하세요! 오늘은 Ollama를 이용해서 메타의 Llama 3.2 Vision을 로컬에서 활용하는 방법에 대해 알아보겠습니다. Llama3.2-vision은 이미지 추론 생성 모델 컬렉션으로, 11B와 90B 크기의 모델이 제공됩니다. Llama 3.2 11B, 90B 모델은 이미지와 텍스트 결합으로 다중 모달 기능을 지원하며, 이미지 추론, 문서 시각적 질의응답, 이미지 캡션 생성 등을 수행할 수 있습니다. 이 블로그에서는 Ollama Llama3.2-vision의 개요, 주요 기능 및 설치방법에 대해 알아보고 간단한 Chainlit 애플리케이션을 만들어 보겠습니다. 

    💡Ollama 로컬 멀티모달 AI: Llama 3.2 Vision 설치 및 활용 가이드

    https://ollama.com/blog/llama3.2-vision

     

    Llama 3.2 Vision · Ollama Blog

    Llama 3.2 Vision

    ollama.com

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    Llama3.2-vision 개요

    Llama3.2-vision은 텍스트와 이미지를 입력받아 텍스트를 출력하는 방식으로 작동하며, 이미지 인식, 추론, 캡션 생성, 이미지 관련 질문 답변 등의 작업에 최적화되어 있습니다. Llama3.2-vision은 오픈 소스 및 상용 멀티모달 모델들을 능가하는 성능을 보여줍니다. 텍스트 작업의 경우 영어, 독일어, 프랑스어, 이탈리아어, 포르투갈어, 힌디어, 스페인어, 태국어를 공식적으로 지원하며, 8개 언어 외에도 더 많은 언어로 학습되었습니다. 하지만 이미지와 텍스트를 함께 사용하는 작업의 경우 영어만 지원됩니다.

     

    Llama3.2-vision은 텍스트와 이미지를 모두 이해하는 멀티모달 모델로, 다음과 같은 특징과 기능을 제공합니다.

    • 다양한 크기의 모델: 11B와 90B 크기의 모델을 제공하여 사용자의 필요에 따라 선택 가능합니다.
    • 이미지 이해 및 추론: 이미지를 분석하고 이해하여 캡션을 생성하거나 이미지에 대한 질문에 답변할 수 있습니다.
    • 다국어 지원: 텍스트만 사용하는 작업의 경우 8개 언어를 공식적으로 지원하며, 더 많은 언어로 학습되었습니다.
    • 뛰어난 성능: 여러 벤치마크에서 오픈 소스 및 상용 멀티모달 모델들을 능가하는 성능을 보여줍니다.
    • 시각적 질의응답 (VQA) 및 시각적 추론: 이미지를 보고 그에 대한 질문을 이해하는 기능입니다.
    • 문서 시각적 질의응답 (DocVQA): 지도나 계약서와 같은 문서의 텍스트와 레이아웃을 모두 이해하고 이미지에서 직접 질문에 답변하는 기능입니다.
    • 이미지 캡션 생성: 이미지 캡션 생성은 시각과 언어 사이의 간극을 메워 세부 사항을 추출하고 장면을 이해한 다음 이야기를 전달하는 한두 문장을 만듭니다.
    • 이미지-텍스트 검색: 이미지-텍스트 검색은 이미지와 그 설명을 연결하는 것과 같습니다. 검색 엔진과 유사하지만 사진과 단어를 모두 이해하는 엔진입니다.

    https://huggingface.co/meta-llama/Llama-3.2-11B-Vision

     

    meta-llama/Llama-3.2-11B-Vision · Hugging Face

    Model Information The Llama 3.2-Vision collection of multimodal large language models (LLMs) is a collection of pretrained and instruction-tuned image reasoning generative models in 11B and 90B sizes (text + images in / text out). The Llama 3.2-Vision inst

    huggingface.co

    728x90

    Ollama Llama3.2-vision 설치방법

    Llama3.2-vision을 로컬에서 사용하려면 먼저 Ollama를 설치한 후, 모델을 다운로드해야 합니다. Ollama는 다운로드 링크에서 운영체제에 따라 설치하면 되고, 완료되면 "ollama pull" 명령어로 Llama3.2-vision 모델을 다운로드합니다. 

    ollama 설치화면

    https://ollama.com/download

     

    Download Ollama on macOS

    Download Ollama for macOS

    ollama.com

    ollama pull llama3.2-vision

    Ollama를 통한 Llama3.2-vision 모델 다운로드

     

    Llama3.2-vision 챗봇 만들기

    다음은 Llama3.2-vision 챗봇을 만들어보겠습니다. 이 블로그의 작업 환경은 Windows 11 Pro, WSL2, 파이썬 버전 3.11, Visul Studio Code(이하 VSC)이며, "WSL 연결"을 통해 Linux환경에서 실행하였습니다.

     

    1. 가상 환경 생성 및 활성화: 먼저 VSC에서 파이썬 가상환경을 생성하고 활성화합니다 

    python -m venv .venv
    source .venv/bin/activate

    2. Ollama 및 chainlit 설치: 가상환경이 활성화된 상태에서 Ollama 실행과 챗봇 대화형 인터페이스에 필요한 chainlit 패키지를 설치합니다. 

    pip install ollama chainlit

    ollama와 chainlit 패키지 설치

    3. 코드 작성: 이 코드는 ChainlitOllama API를 사용해 사용자가 제공한 이미지를 분석합니다. 채팅 시작 시 환영 메시지를 전송하고, 사용자가 이미지를 보내면 이를 읽어 `image_data`로 저장한 후 Ollama의 `llama3.2-vision` 모델에 전송하여 분석 결과를 받습니다. 아래 코드를 복사해서 app.py 이름으로 저장합니다.

    import chainlit as cl
    import ollama
    
    @cl.on_chat_start
    async def start():
        # 초기 메시지 전송
        await cl.Message(
            content="환영합니다! 이미지를 보내주시면 분석해드리겠습니다.(이미지+텍스트 작업의 경우 영어만 지원)"
        ).send()
    
    @cl.on_message
    async def main(message: cl.Message):
        # 이미지 요소 가져오기
        image_elements = message.elements
        
        if not image_elements:
            await cl.Message(
                content="분석할 이미지를 제공해 주세요."
            ).send()
            return
        
        # 이미지 처리
        for image in image_elements:
            try:
                # 이미지 콘텐츠 가져오기
                if image.path:
                    with open(image.path, 'rb') as file:
                        image_data = file.read()
                else:
                    image_data = image.content
    
                # 사용자 질문 받기
                user_question = message.content or '이 이미지에 대해 질문이 없습니다.'
    
                # Ollama에 이미지 및 사용자 질문 전송
                response = ollama.chat(
                    model='llama3.2-vision',  # 필요에 따라 모델 이름 업데이트
                    messages=[
                        {
                            'role': 'user',
                            'content': user_question,
                            'images': [image_data],
                        },
                    ],
                )
                
                # 분석 결과와 이미지 표시
                await cl.Message(
                    content=response['message']['content'],
                    elements=[
                        cl.Image(
                            name="분석된 이미지",
                            content=image_data,
                            display="inline"
                        )
                    ]
                ).send()
                
            except Exception as e:
                await cl.Message(
                    content=f"이미지 처리 중 오류 발생: {str(e)}"
                ).send()

     

    4. 코드실행: 코드를 실행하면 http://localhost:8000/에서 다음과 같은 Llama3.2-vision 대화 웹페이지가 열립니다. 

    chainlit run app.py

    Llama3.2-vision 챗봇 초기화면

    Llama3.2-vision 테스트

    다음은 Llama3.2-vision의 이미지 인식, 텍스트 추출, 추론 및 코딩성능 테스트해 보겠습니다. 테스트는 위에서 만든 챗봇과 OpenWebUI를 활용하였습니다. 

     

    먼저, 챗봇을 이용한 텍스트 추출 테스트에서 Llama3.2-vision은 아래 화면과 같이 이미지 내의 모든 텍스트를 누락 없이 추출하였으며, 이미지도 잘 이해하고 답변하였습니다. 

    Llama3.2-vision 테스트: 글자 추출(좌), 이미지 설명(우)

    OpenWebUI를 이용한 테스트에서 Llama3.2-vision 모델은 아래 화면과 같이 사용자가 입력한 이미지를 상세하고 정확하게 잘 설명하였으며, 이미지와 텍스트가 혼합된 Hard 난이도 Python 코딩 질문에도 정확하게 답변하였습니다. 

    Llama3.2-vision 이미지 설명 테스트
    Llama3.2-vision 코딩 성능 테스트
    Python Hard 난이도 문제: 성공

    다음은 ComfyUI에서 Llama3.2-vision 모델이 이미지를 설명하도록 하고, 설명내용을 텍스트 프롬프트에 입력하여 Flux모델로 이미지를 생성해 보았습니다. Llama3.2-vision이 이미지를 잘 설명할수록, 원본과 유사한 이미지가 생성되겠죠?

    Llama3.2-vision 이미지 설명 및 Flux 이미지 생성 워크 플로우
    원본 이미지(좌), Llama3.2-vision이 원본 이미지를 설명한 내용으로 생성한 이미지(우)
    Llama3.2-vision 이미지 설명 및 Flux 이미지 생성 워크 플로우
    원본 이미지(좌), Llama3.2-vision이 원본 이미지를 설명한 내용으로 생성한 이미지(우)

    테스트 결과 Llama3.2-vision 모델은 이미지를 잘 설명하였으며, 이 설명을 바탕으로 Flux가 생성한 이미지도 원본 이미지의 장소와 색상, 주인공을 잘 표현하였습니다. 다음은 Llama3.2-vision 모델이 해변의 여성 이미지를 설명한 내용입니다. 

    The image depicts a serene and idyllic scene of a woman standing on a beach at sunset. The overall atmosphere is one of tranquility and relaxation, with the warm glow of the setting sun casting a golden light over the entire scene.
    
    * A woman:
    	+ Standing in the foreground of the image
    	+ Facing towards the camera with a slight smile
    	+ Her long brown hair is blowing gently in the breeze
    	+ She is wearing a white dress that complements her skin tone
    * The sun:
    	+ Setting over the ocean in the background
    	+ Casting a warm orange glow over the entire scene
    	+ Creating a sense of depth and dimensionality
    * The beach:
    	+ Stretching out behind the woman
    	+ With a few scattered rocks and pebbles along the shoreline
    	+ Reflecting the warm colors of the sunset
    * The ocean:
    	+ Calm and peaceful in the background
    	+ With gentle waves lapping at the shore
    	+ Creating a soothing and relaxing atmosphere
    
    Overall, the image presents a picturesque and idyllic scene that evokes feelings of serenity and tranquility. The combination of the warm sunset, calm ocean, and peaceful beach creates a sense of harmony and balance, making it an appealing and calming visual experience.

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    맺음말

    오늘은 이미지 이해 및 추론 능력을 갖춘 강력한 멀티모달 모델, Llama3.2-vision에 대해 알아보았습니다. Llama3.2-vision은 텍스트와 이미지를 함께 사용하는 다양한 작업에 활용될 수 있으며, 오픈 소스 및 상용 모델들을 능가하는 성능을 기반으로 멀티모달 모델 분야에서 다양한 방식으로 활용될 것으로 기대됩니다.

     

    Llama3.2-vision 모델을 테스트해 본 후기는 다음과 같습니다. 

    • 8GB/55GB에 달하는 용량을 가진 11B/90B모델은 높은 GPU성능을 요구한다. 
    • webp 이미지 형식은 지원하지 않는다. 

    오늘 블로그는 여기까지입니다. 여러분이 Llama3.2-vision 모델을 활용하시는데 도움이 되었기를 바라면서 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

    https://fornewchallenge.tistory.com/

     

     

    2024.09.28 - [AI 언어 모델] - 👁️🤖Llama 3.2: 에지 컴퓨팅과 비전까지 확장한 Meta의 AI 모델

     

    👁️🤖Llama 3.2: 에지 컴퓨팅과 비전까지 확장한 Meta의 AI 모델

    안녕하세요! 오늘은 Meta에서 공개한 최신 오픈소스 대규모 언어 모델(LLM)인 Llama 3.2에 대해 알아보겠습니다. Llama 3.2는 이전 3.1 버전보다 향상된 성능을 보여주며, 특히 에지(Edge) 컴퓨팅 및 비전

    fornewchallenge.tistory.com

     

    728x90