본문 바로가기
AI 언어 모델

🤖💪Qwen2.5 Coder 32B: 오픈소스로 GPT-4o급 성능에 아티팩트까지!

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

    안녕하세요! 오늘은 알리바바의 최신 코딩 모델 Qwen2.5-Coder-32B에 대해 알아보겠습니다. Qwen2.5-Coder는 92개 프로그래밍 언어를 지원하며, Cursor 및 Artifacts와 통합되어 사용자 친화적인 개발 환경을 제공합니다. 특히, Qwen2.5-Coder-32B-Instruct 모델은 코드 생성, 오류 수정, 추론 성능에서 GPT-4o와 유사한 최상위 성능을 보여주며, 다국어 코드 복구 벤치마크에서 75.2점을 기록해 1위를 차지했습니다. 이 블로그에서는 Qwen2.5-Coder-32B 모델의 개요, 특징과 주요 기능, 벤치마크 결과에 대해 알아보고, 성능과 아티팩트 기능을 테스트해 보겠습니다. 

    🤖💪Qwen2.5 Coder 32B: 오픈소스로 GPT-4o급 성능에 아티팩트까지!

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

    Qwen2.5 Coder 개요

    Qwen2.5 Coder는 알리바바 클라우드의 Qwen 팀이 개발한 대규모 언어 모델 시리즈인 Qwen2.5의 코드 버전입니다. 오픈소스 코드 LLM 개발을 촉진하기 위해 만들어졌으며, "강력함", "다양성", "실용성"을 특징으로 합니다. 

    • 강력함: Qwen2.5-Coder-32B-Instruct는 코드 작성 능력에서 GPT-4o와 비슷한 성능을 보이면서, 오픈소스 코드 모델 중 현시점에서 가장 뛰어난 성과를 거두고 있는 모델입니다.
    • 다양성: 이전에 공개된 1.5B와 7B 크기의 모델을 기반으로, 이번에는 0.5B, 3B, 14B, 32B 크기의 네 가지 모델이 추가되어, 총 여섯 가지 모델 사이즈를 지원하므로, 개발자들이 필요에 맞춰 최적의 모델을 선택할 수 있습니다.
    • 실용적: Qwen2.5-Coder는 코드 어시스턴트인 Cursor와 통합된 개발환경을 제공하고, 코드를 사용하여 시각적 결과물을 생성하는 Artifacts 기능을 통해 실용적이고 사용자 친화적인 개발 환경을 제공합니다.

    Qwen2.5 Coder는 0.5B, 1.5B, 3B, 7B, 14B, 32B를 포함한 다양한 모델 크기를 제공하며, 각 크기에 대해 Base 모델과 Instruct 모델을 오픈소스로 제공합니다.

    • Base 모델: 코드 완성 작업에 일반적으로 사용되며, 미세 조정을 위한 기본 모델입니다.
    • Instruct 모델: 채팅을 위한 지시 모델입니다.
    모델 유형 모델 크기 컨텍스트 길이 설명
    기본 모델 (Base Model) Qwen2.5-Coder-0.5B/1.5B/3B 32K 코드 완성, 미세조정 기본모델
    Qwen2.5-Coder-7B/14B/32B 128K
    지시 모델 (Instruct Model) Qwen2.5-Coder-0.5B/1.5B/3B 32K 채팅에 사용
    Qwen2.5-Coder-7B/14B/32B 128K
    728x90

    Qwen2.5 Coder 32B 특징 및 주요 기능

    Qwen2.5-Coder-32B-Instruct는 코드 생성 및 복구에서 뛰어난 성능을 보이고, 다양한 프로그래밍 언어를 지원하며, 인간 선호도 정렬에서도 우수한 성능을 보입니다. 

    • 최첨단 코드 생성 능력: Qwen2.5-Coder-32B-Instruct는 여러 코드 생성 벤치마크에서 오픈소스 모델 중 최고의 성능을 달성했으며, GPT-4o와 견줄 만한 성능을 보여줍니다.
    • 뛰어난 코드 복구 능력: Qwen2.5-Coder-32B-Instruct는 코드 오류 수정을 도와 프로그래밍 효율성을 높입니다. 코드 복구 벤치마크인 Aider에서 GPT-4o와 비슷한 73.7점을 기록했습니다.
    • 다국어 코드 복구 기능: 사용자가 익숙한 프로그래밍 언어를 이해하고 수정하는 데 도움을 주며, 익숙하지 않은 언어의 학습 비용을 크게 줄입니다. 다국어 코드 복구 벤치마크인 MdEval에서 75.2점을 기록하며 모든 오픈소스 모델 중 1위를 차지했습니다.
    • 인간 선호도 정렬: Qwen2.5-Coder-32B-Instruct는 Code Arena 벤치마크에서 GPT-4o를 사용한 평가 결과, 인간 선호도 정렬에서 우수한 성능을 보여주었습니다.

    Qwen2.5-Coder-32B-Instruct 벤치마크 결과

    또한, Qwen2.5-Coder-32B-Instruct는 긴 컨텍스트와 다양한 코딩 언어를 지원하고, 파일 간의 상호 관계를 이해하고 코드 내용을 완성할 수 있으며, Open WebUI의 아티팩트 기능을 제공합니다. 

    • 긴 컨텍스트 이해 및 생성: 최대 128K 토큰의 컨텍스트 길이를 지원합니다.
    • 92개의 코딩 언어 지원: Ada, Python, C++, Java 등 다양한 프로그래밍 언어를 지원합니다.
    • 기본 모델에서 수학 및 일반 능력 유지: Qwen2.5의 강점을 그대로 이어받았습니다.
    • 파일 수준 코드 완성 (중간 채우기): <fim_prefix>, <fim_suffix>, <fim_middle> 세 가지 특수 토큰을 사용하여 코드 구조의 각 세그먼트를 나타내는 방식으로 코드 삽입 작업을 수행합니다.
    • 저장소 수준 코드 완성: 여러 파일의 내용을 모델에 입력하여 파일 간의 상호 관계를 이해하고 코드 내용을 완성할 수 있습니다. 저장소 구조를 나타내기 위해 <|repo_name|> 및 <|file_sep|> 두 가지 특수 토큰을 사용합니다.
    • Cursor 및 Artifacts와의 통합: Qwen2.5 Coder는 코드 어시스턴트 Cursor와의 통합을 통해 개발자에게 친숙하고 강력한 옵션을 제공합니다. 또한 Artifacts 시나리오에서 Open WebUI를 사용하여 시각적 작업을 만드는 데 사용될 수 있습니다.

    Qwen2.5-Coder-32B 모델의 Open WebUI 아티팩트 기능

     

    Qwen2.5 Coder 32B 벤치마크 결과

    Qwen2.5 Coder는 코드 생성, 수정, 추론 등 다양한 벤치마크에서 크기 대비 뛰어난 성능을 보여주고 있습니다. 

    • 코드 생성: EvalPlus, LiveCodeBench, BigCodeBench와 같은 주요 코드 생성 벤치마크에서 Qwen2.5-Coder-32B-Instruct 모델은 오픈소스 모델 중 가장 높은 점수를 기록했습니다. 이는 GPT-4o와 경쟁할 만한 수준입니다.
    • 코드 수정: Qwen2.5-Coder-32B-Instruct 모델은 코드 수정 벤치마크인 Aider에서 73.7점을 기록하며, GPT-4o와 유사한 성능을 보였습니다.
    • 코드 추론: Qwen2.5-Coder-32B-Instruct 모델은 코드 실행 과정을 학습하고 입력과 출력을 정확하게 예측하는 코드 추론 능력에서도 뛰어난 성능을 보여줍니다.

    모델 크기 대비 성능 그래프

    • 다중 프로그래밍 언어 지원: 40개 이상의 프로그래밍 언어에서 뛰어난 성능을 발휘합니다. McEval(코드 생성 및 이해) 벤치마크에서 65.9점을 기록했으며, 다국어 코드 수정 벤치마크인 MdEval에서는 75.2점을 기록하며 모든 오픈소스 모델 중 1위를 차지했습니다.
    • 인간 선호도: Code Arena 벤치마크에서 GPT-4o를 사용한 평가 결과, 인간 선호도 측면에서도 우수한 성능을 보였습니다.

    Qwen2.5-Coder-32B-Instruct 모델 인간 선호도 벤치마크 결과

     

    Qwen2.5 Coder 32B 사용방법

    다음은 Qwen2.5 Coder 32B의 사용방법에 대해 알아보겠습니다. Qwen2.5 Coder 32B를 로컬에서 사용하려면 최소 48GB 이상의 VRAM과 고성능 GPU가 필요하므로, 여기서는 Hyperbolic APILightning AI 클라우드 GPU, 그리고 허깅페이스 스페이스를 활용하는 방법에 대해 알아보겠습니다. 이 블로그의 작업 환경은 Windows 11 Pro, WSL2, 파이썬 버전 3.11, Visul Studio Code(이하 VSC)이며, "WSL 연결"을 통해 Linux환경에서 실행하였습니다.

     

    1. Hyperbolic API 연결방법

    • https://app.hyperbolic.xyz/ 링크에 접속해서 가입한 후, Settings 메뉴에서 API Key를 발급합니다.
    • VSC에서 작업 디렉토리를 생성하고 다음 명령어로 가상환경 생성 및 활성화 후, 의존성 패키지를 설치하고, 아래 코드를 복사하여 새 파이썬 파일로 저장합니다. 코드의 "Authorization": "Bearer API-Key" 부분에서 API-Key를 본인이 발급받은 API Key로 수정합니다. 
    python3.11 -m venv myenv  # 가상환경 생성 
    source myenv/bin/activate  # 가상환경 활성화
    pip install gradio requests  # 의존성 패키지 설치
    import gradio as gr
    import requests
    
    # Hyperbolic API details
    url = "https://api.hyperbolic.xyz/v1/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer API-Key"
    }
    
    # Qwen 2.5 모델과의 대화 함수 정의
    def qwen_chat(user_input, chat_history):
        messages = [{"role": "system", "content": "You are a helpful assistant. Answer in Korean."}]
        
        if chat_history:
            for user_msg, assistant_msg in chat_history:
                messages.append({"role": "user", "content": user_msg})
                messages.append({"role": "assistant", "content": assistant_msg})
        
        messages.append({"role": "user", "content": user_input})
    
        data = {
            "messages": messages,
            "model": "Qwen/Qwen2.5-Coder-32B-Instruct",
            "max_tokens": 512,
            "temperature": 0.1,
            "top_p": 0.9
        }
    
        response = requests.post(url, headers=headers, json=data)
        assistant_message = response.json().get('choices', [{}])[0].get('message', {}).get('content', '')
    
        chat_history.append((user_input, assistant_message))
        return chat_history, ""  # Final output
    
    # Gradio 인터페이스 설정
    with gr.Blocks() as demo:
        gr.Markdown("<h1><center>Qwen 2.5-Coder-32B와의 대화</center></h1>")
        
        # Main row for the chatbot
        with gr.Row():  
            with gr.Column(scale=2):  # Chatbot on the left
                chatbot = gr.Chatbot(label="대화 기록", height=500)  # Chat history area
    
        # Separate row for the user input
        with gr.Row():  
            with gr.Column(scale=1):  # User input area
                user_input = gr.Textbox(label="대화를 입력하세요", placeholder="여기에 입력하세요..")
                send_btn = gr.Button("전송")  # Submit button
    
        # 버튼 클릭 및 Enter키를 눌렀을 때 대화 처리
        send_btn.click(qwen_chat, inputs=[user_input, chatbot], outputs=[chatbot, user_input])
        user_input.submit(qwen_chat, inputs=[user_input, chatbot], outputs=[chatbot, user_input])  # Handle Enter key
    
    # Gradio 앱 실행
    if __name__ == "__main__":
        demo.launch(share=True)  # Share option을 켜서 실행

    위 코드는 Gradio를 사용하여 Qwen2.5 Coder 32B 모델과 대화하는 웹 애플리케이션입니다. 사용자가 입력한 텍스트는 API에 전달되어 모델의 응답을 받고, 응답은 대화 기록에 추가되어 화면에 표시됩니다. 사용자 입력과 대화 이력은 API에 포함되어 모델이 문맥을 유지하게 합니다.

    • 코드를 실행하면 http://127.0.0.1:7860/ 주소에서 아래와 같이 초기화면이 열립니다. 

    Qwen2.5 Coder 32B 모델과의 대화 초기화면

    2. Lightning AI 연결방법

    무료 GPU 클라우드 기반 AI 개발 플랫폼인 Lightning AI에 대한 기본적인 내용은 아래 포스팅을 참고하시기 바랍니다.

    2024.06.02 - [AI 도구] - ⚡️🆓Lightning AI: 무료 GPU 클라우드 기반 AI 개발 플랫폼 Ollama 가이드

     

    ⚡️🆓Lightning AI: 무료 GPU 클라우드 기반 AI 개발 플랫폼 Ollama 가이드

    안녕하세요! 오늘은 Lightning AI라는 클라우드 컴퓨팅 기반 AI 개발 플랫폼을 소개해 드리겠습니다. Lightning AI는 머신러닝(ML)과 인공지능(AI) 프로젝트를 빠르고 효율적으로 개발, 프로토타입, 훈련,

    fornewchallenge.tistory.com

    • Lightning AI를 실행하고 새 스튜디오에서 Ollama를 설치합니다. 설치방법은 링크를 참고하세요.

    Lightning AI 스튜디오 Ollama 설치 화면

    • Ollama의 설치가 완료되면 아래 명령어로 Qwen2.5 Coder 32B 모델을 다운로드합니다. 
    ollama pull qwen2.5-coder:32b
    • 모델 다운로드가 완료되면 Open WebUI를 설치합니다. Open WebUI에 대한 내용은 아래 포스팅을 참고하세요

    2024.07.31 - [AI 도구] - Open-WebUI: 🔍실시간 웹 검색과 개인 메모리 기능을 갖춘 LLM 실행기

     

    Open-WebUI: 🔍실시간 웹 검색과 개인 메모리 기능을 갖춘 LLM 실행기

    안녕하세요! 오늘은 최근 엡데이트 된 언어모델 실행을 위한 웹 인터페이스, Open WebUI에 대해 알아보겠습니다. Open WebUI는 풍부한 기능과 사용하기 쉬운 인터페이스를 제공하며, 온라인 오프라인

    fornewchallenge.tistory.com

    python3 -m pip install open-webui

    Lightning AI 스튜디오 Open WebUI 설치 화면

    • 위 방법으로 Ollama 접속에러가 발생하면 다음 명령어로 Open WebUI를 다시 설치하고 구동합니다. 
    docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

    Lightning AI에서 Open WebUI 실행 화면

    • Open WebUI 실행 후, 새 채팅을 시작하고 Qwen2.5 Coder 32B 모델을 선택합니다.

    Lightning AI에서 Ollama 모델 Qwen2.5 Coder 32B 선택

    3. 허깅페이스 스페이스 활용방법

    Qwen2.5 Coder  테스트

    다음은 Qwen2.5-Coder-32B-Instruct의 코딩성능아티팩트 기능을 테스트해 보겠습니다.  코딩성능https://edabit.com/challenges사이트의 Python, JavaScript, C++ 언어의 Expert 난이도 문제를 허깅페이스 스페이스에서 테스트하였으며, 아티팩트 기능Lightning AIOpen WebUI에서 테스트하였습니다.

     

    1. 코딩성능 테스트

    • Python Expert  난이도: 성공

    • JavaScript Expert  난이도: 성공

    • C++ Expert  난이도: 성공

    테스트 결과 Python, JavaScript, C++언어의 Expert 난이도 문제를 1~2회 시도하여 모두 성공하였습니다. 

     

    2. 아티팩트 기능 테스트

    • 요청 프롬프트: Create snake game using html, css, js.

    스네이크 게임 아티팩트 기능

    • 요청 프롬프트: Create To-Do List app that can add, delete, modify the task using html, css, js.

    To-Do List 아티팩트 기능

    테스트 결과 Qwen2.5-Coder-32B는 스네이크 게임과 To-Do 리스트 앱 모두 첫 번째 시도에서 정상동작하였습니다.

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

    맺음말

    오늘 소개한 Qwen2.5-Coder-32B오픈소스 AI 코딩 모델의 새로운 가능성을 보여줍니다. 92개 이상의 프로그래밍 언어를 지원하며, GPT-4o와 유사한 성능을 제공하는 등 다재다능한 기능을 갖춘 점에서 인상적입니다. 특히, 코드 오류 수정과 다국어 코드 복구 벤치마크에서 1위를 차지하며 강력한 실력을 증명했습니다.

     

    Qwen2.5-Coder-32B를 테스트해 본 후기는 다음과 같습니다. 

    • 속도와 정확도, 성능면에서 오픈소스 코딩 모델 중 가장 앞선다.
    • 아티팩트 기능은 Claude에 뒤지지 않으며, 매우 인상적이다.

     

    오늘은 알리바바의 새로운 코딩 모델 Qwen2.5-Coder-32B에 대해 알아보았는데요. 여러분도 한번 Open WebUI를 이용해서 Qwen2.5-Coder-32B를 간단하게 설치해 보시면 좋은 경험이 되실 것 같습니다. 그럼 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다!

     

    https://fornewchallenge.tistory.com/

     

     

    2024.09.26 - [AI 언어 모델] - 🚀Qwen2.5: 오픈소스 모델 최고 성능! MMLU 86.1% HumanEval 88.4% 달성!

     

    🚀Qwen2.5: 오픈소스 모델 최고 성능! MMLU 86.1% HumanEval 88.4% 달성!

    안녕하세요! 오늘은 중국 알리바바 클라우드에서 개발한 최신 오픈소스 인공지능 모델 Qwen2.5에 대해 알아보겠습니다. Qwen2.5는 대화 응대, 자연어 처리, 그리고 코딩 능력에서 뛰어난 성능을 자

    fornewchallenge.tistory.com

     

    728x90