<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>청춘</title>
    <link>https://24bean.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 15 Aug 2026 09:16:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>24_bean</managingEditor>
    <image>
      <title>청춘</title>
      <url>https://tistory1.daumcdn.net/tistory/5457396/attach/cf9b0559f9fc494a8194e3d34ac4346c</url>
      <link>https://24bean.tistory.com</link>
    </image>
    <item>
      <title>Python FastAPI를 이용한 웹소켓 기반 비동기 통신을 위한 네트워크 구성</title>
      <link>https://24bean.tistory.com/entry/Python-FastAPI%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9%EC%86%8C%EC%BC%93-%EA%B8%B0%EB%B0%98-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%84%B1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Python FastAPI를 이용한 웹소켓 기반 비동기(Async) 통신을 위한 네트워크 구성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;웹 애플리케이션이 점점 복잡해지고 사용자와의 실시간 상호작용이 중요해짐에 따라, 비동기 통신과 웹소켓(WebSocket)의 활용이 필수적이 되었습니다. 이번 글에서는 Python의 FastAPI 프레임워크를 이용하여 웹소켓 기반의 비동기 통신을 구현하고, 이를 위한 네트워크 구성을 상세히 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ttMfK/btsK8NHxl06/g0Tq61i8vNqU4Fzbop9hHK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ttMfK/btsK8NHxl06/g0Tq61i8vNqU4Fzbop9hHK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ttMfK/btsK8NHxl06/g0Tq61i8vNqU4Fzbop9hHK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FttMfK%2FbtsK8NHxl06%2Fg0Tq61i8vNqU4Fzbop9hHK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;589&quot; height=&quot;549&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 1. 웹소켓과 비동기 통신의 이해&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 2. FastAPI와 웹소켓 통합&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 3. 프로젝트 구조 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 4. 코드 구현&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;bull; 4.1. FastAPI 설치 및 기본 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;bull; 4.2. 웹소켓 엔드포인트 작성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;bull; 4.3. 클라이언트 코드 작성&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 5. 네트워크 구성 및 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;bull; 5.1. 로컬 환경 설정&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;bull; 5.2. 배포 시 고려사항&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 6. 테스트 및 검증&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 7. 결론&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 웹소켓과 비동기 통신의 이해&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;웹소켓(WebSocket)이란?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;웹소켓은 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜로, HTTP와는 달리 연결이 지속되어 실시간 데이터 전송에 적합합니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비동기 통신의 필요성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;비동기 통신은 서버의 응답을 기다리지 않고도 다른 작업을 수행할 수 있게 해주어 애플리케이션의 성능과 사용자 경험을 향상시킵니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. FastAPI와 웹소켓 통합&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;FastAPI는 Python의 최신 비동기 기능을 활용한 고성능 웹 프레임워크로, 웹소켓을 쉽게 통합할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 프로젝트 구조 설정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733379179800&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;my_websocket_project/
├── app.py
├── requirements.txt
└── templates/
    └── index.html&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 코드 구현&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4.1. FastAPI 설치 및 기본 설정&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 필요한 패키지를 설치합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1733379207083&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install fastapi uvicorn&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;app.py&lt;/span&gt; 파일을 생성하고 기본 설정을 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1733379221757&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from fastapi import FastAPI

app = FastAPI()&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4.2. 웹소켓 엔드포인트 작성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;웹소켓을 지원하기 위해 &lt;span&gt;WebSocket&lt;/span&gt; 클래스를 임포트하고 엔드포인트를 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1733379239012&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from fastapi.responses import HTMLResponse

app = FastAPI()

# 연결된 클라이언트를 관리하기 위한 매니저 클래스
class ConnectionManager:
    def __init__(self):
        self.active_connections: list[WebSocket] = []

    async def connect(self, websocket: WebSocket):
        await websocket.accept()
        self.active_connections.append(websocket)
        print(&quot;Client connected.&quot;)

    def disconnect(self, websocket: WebSocket):
        self.active_connections.remove(websocket)
        print(&quot;Client disconnected.&quot;)

    async def broadcast(self, message: str):
        for connection in self.active_connections:
            await connection.send_text(message)

manager = ConnectionManager()

@app.get(&quot;/&quot;)
async def get():
    with open(&quot;templates/index.html&quot;) as f:
        html_content = f.read()
    return HTMLResponse(content=html_content, status_code=200)

@app.websocket(&quot;/ws&quot;)
async def websocket_endpoint(websocket: WebSocket):
    await manager.connect(websocket)
    try:
        while True:
            data = await websocket.receive_text()
            print(f&quot;Received message: {data}&quot;)
            await manager.broadcast(f&quot;Client says: {data}&quot;)
    except WebSocketDisconnect:
        manager.disconnect(websocket)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4.3. 클라이언트 코드 작성&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;templates/index.html&lt;/span&gt; 파일을 생성하고 다음과 같이 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1733379256512&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;WebSocket Test&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;WebSocket 테스트&amp;lt;/h1&amp;gt;
    &amp;lt;input id=&quot;messageInput&quot; type=&quot;text&quot; placeholder=&quot;메시지를 입력하세요&quot; /&amp;gt;
    &amp;lt;button onclick=&quot;sendMessage()&quot;&amp;gt;전송&amp;lt;/button&amp;gt;
    &amp;lt;ul id=&quot;messages&quot;&amp;gt;
    &amp;lt;/ul&amp;gt;

    &amp;lt;script&amp;gt;
        var ws = new WebSocket(&quot;ws://localhost:8000/ws&quot;);
        ws.onmessage = function(event) {
            var messages = document.getElementById('messages');
            var message = document.createElement('li');
            var content = document.createTextNode(event.data);
            message.appendChild(content);
            messages.appendChild(message);
        };

        function sendMessage() {
            var input = document.getElementById(&quot;messageInput&quot;);
            ws.send(input.value);
            input.value = '';
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 네트워크 구성 및 설정&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5.1. 로컬 환경 설정&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;로컬에서 서버를 실행하려면 다음 명령어를 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1733379270610&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;uvicorn app:app --reload&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;서버는 기본적으로 &lt;/span&gt;http://localhost:8000&lt;span&gt;에서 실행됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5.2. 배포 시 고려사항&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;포트 개방&lt;/b&gt;: 배포 환경에서는 웹소켓 통신을 위한 포트를 개방해야 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;리버스 프록시 설정&lt;/b&gt;: Nginx와 같은 리버스 프록시를 사용하여 웹소켓 요청을 처리할 수 있도록 설정합니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;SSL/TLS 적용&lt;/b&gt;: 보안을 위해 HTTPS를 적용해야 하며, 웹소켓의 경우 &lt;span&gt;wss://&lt;/span&gt; 프로토콜을 사용합니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Nginx 설정 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733379284038&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &quot;upgrade&quot;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. 테스트 및 검증&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;브라우저에서 &lt;span&gt;http://localhost:8000&lt;/span&gt;에 접속하여 메시지를 전송하고, 실시간으로 메시지가 표시되는지 확인합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7. 결론&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;이번 글에서는 Python의 FastAPI를 이용하여 웹소켓 기반의 비동기 통신을 구현하고, 이를 위한 네트워크 구성을 살펴보았습니다. 웹소켓을 활용하면 실시간 기능을 손쉽게 구현할 수 있으므로, 다양한 웹 애플리케이션에 적용해 보시기 바랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;a href=&quot;https://fastapi.tiangolo.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt; &lt;/span&gt;FastAPI 공식 문서&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;a href=&quot;https://www.uvicorn.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt; &lt;/span&gt;UVicorn&lt;/a&gt;&lt;/p&gt;</description>
      <category>fastapi</category>
      <category>Python</category>
      <category>uvicorn</category>
      <category>네트워크</category>
      <category>비동기</category>
      <category>웹소켓</category>
      <category>통신</category>
      <category>파이썬</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/62</guid>
      <comments>https://24bean.tistory.com/entry/Python-FastAPI%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9%EC%86%8C%EC%BC%93-%EA%B8%B0%EB%B0%98-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%86%B5%EC%8B%A0%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B5%AC%EC%84%B1#entry62comment</comments>
      <pubDate>Thu, 5 Dec 2024 15:19:43 +0900</pubDate>
    </item>
    <item>
      <title>Time series classification 데이터 전처리</title>
      <link>https://24bean.tistory.com/entry/Time-series-classification-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스트에서 &lt;b&gt;Time Series Classification (TSC)&lt;/b&gt;, 즉 시계열 분류에 대해 정의한 바 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은 아래 링크를 통해 확인할 수 있습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://24bean.tistory.com/entry/TSC-Time-series-classification-시계열-분류-정리&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://24bean.tistory.com/entry/TSC-Time-series-classification-시계열-분류-정리&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725169705142&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;TSC / Time series classification 시계열 분류 정리&quot; data-og-description=&quot;정의 (Definition) Time Series Classification (TSC) : 시간의 흐름에 따라 측정된 데이터를 분류하는 문제를 다루는 기술. 시계열 데이터(Time Series)는 시간에 따라 값이 변화하는 데이터를 일컫는 말이다. 일&quot; data-og-host=&quot;24bean.tistory.com&quot; data-og-source-url=&quot;https://24bean.tistory.com/entry/TSC-Time-series-classification-시계열-분류-정리&quot; data-og-url=&quot;https://24bean.tistory.com/entry/TSC-Time-series-classification-%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%B6%84%EB%A5%98-%EC%A0%95%EB%A6%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bDxbM0/hyWZer9OLW/KqzcKeAdm1L6ACIJkmh3mk/img.png?width=800&amp;amp;height=179&amp;amp;face=0_0_800_179,https://scrap.kakaocdn.net/dn/gy7JH/hyWZeZZsUv/EoNv9hPRsyCcDSg4UMj3Vk/img.png?width=800&amp;amp;height=179&amp;amp;face=0_0_800_179,https://scrap.kakaocdn.net/dn/7BpHy/hyWV4rcK9W/O2Bk45fCKs2HM0HRk3eKh0/img.jpg?width=788&amp;amp;height=828&amp;amp;face=280_326_479_543&quot;&gt;&lt;a href=&quot;https://24bean.tistory.com/entry/TSC-Time-series-classification-시계열-분류-정리&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://24bean.tistory.com/entry/TSC-Time-series-classification-시계열-분류-정리&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bDxbM0/hyWZer9OLW/KqzcKeAdm1L6ACIJkmh3mk/img.png?width=800&amp;amp;height=179&amp;amp;face=0_0_800_179,https://scrap.kakaocdn.net/dn/gy7JH/hyWZeZZsUv/EoNv9hPRsyCcDSg4UMj3Vk/img.png?width=800&amp;amp;height=179&amp;amp;face=0_0_800_179,https://scrap.kakaocdn.net/dn/7BpHy/hyWV4rcK9W/O2Bk45fCKs2HM0HRk3eKh0/img.jpg?width=788&amp;amp;height=828&amp;amp;face=280_326_479_543');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;TSC / Time series classification 시계열 분류 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;정의 (Definition) Time Series Classification (TSC) : 시간의 흐름에 따라 측정된 데이터를 분류하는 문제를 다루는 기술. 시계열 데이터(Time Series)는 시간에 따라 값이 변화하는 데이터를 일컫는 말이다. 일&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;24bean.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Time Series Classification (TSC)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 시간의 흐름에 따라 측정된 데이터를 분류하는 문제를 다루는 기술.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;시계열 데이터(Time Series)는 일반적으로 다음과 같은 특징을 갖는다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;시간에 따라 측정된 값이 변화한다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;값의 변화는 시간적인 관계에 따라서 발생한다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;일반적으로 이전 시간에 측정된 값이 다음 시간에 측정된 값에 영향을 준다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;&lt;b&gt;시계열 데이터의 길이는 고정되어 있지 않을 수 있다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서, 시계열 데이터의 가장 큰 특징은 &lt;b&gt;시간적인 관계&lt;/b&gt;가 있다는 점입니다. 이러한 시간적 특성을 고려해 데이터를 &lt;b&gt;적절한 Time Frame&lt;/b&gt;으로 나누어 전처리해야 의미 있는 인사이트를 도출하고, 효과적인 모델 학습이 가능합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 예제와 함께 이해해봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1725170089419&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd
import numpy as np

# 클래스 A (6일 데이터)
date_range_A = pd.date_range(start='2024-01-01', periods=6, freq='D')
data_A = np.random.normal(loc=0, scale=1, size=(6, 1))
data_A_df = pd.DataFrame(data_A, columns=['Value'])
data_A_df['Class'] = 'A'
data_A_df['Date'] = date_range_A

# 클래스 B (5일 데이터)
date_range_B = pd.date_range(start='2024-01-01', periods=5, freq='D')
data_B = np.random.normal(loc=5, scale=1.5, size=(5, 1))
data_B_df = pd.DataFrame(data_B, columns=['Value'])
data_B_df['Class'] = 'B'
data_B_df['Date'] = date_range_B

# 클래스 C (7일 데이터)
date_range_C = pd.date_range(start='2024-01-01', periods=7, freq='D')
data_C = np.random.normal(loc=10, scale=2, size=(7, 1))
data_C_df = pd.DataFrame(data_C, columns=['Value'])
data_C_df['Class'] = 'C'
data_C_df['Date'] = date_range_C

# 세 개의 클래스 데이터프레임 병합
time_series_sampled_df_abc = pd.concat([data_A_df, data_B_df, data_C_df]).reset_index(drop=True)
print(time_series_sampled_df_abc)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cATe0V/btsJme9c5Y7/T9u9Gc2ynJhNK6NwB5FQf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cATe0V/btsJme9c5Y7/T9u9Gc2ynJhNK6NwB5FQf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cATe0V/btsJme9c5Y7/T9u9Gc2ynJhNK6NwB5FQf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcATe0V%2FbtsJme9c5Y7%2FT9u9Gc2ynJhNK6NwB5FQf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;228&quot; height=&quot;404&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터&amp;nbsp;전처리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;앞서 언급한 것처럼, 각 클래스가 동일한 기간의 데이터를 가져야 모델 학습에 적합한 형태로 사용할 수 있습니다. 따라서, 가장 적은 날짜 수를 가진 &lt;b&gt;Class B&lt;/b&gt;의 데이터 기간인 &lt;b&gt;5일&lt;/b&gt;을 기준으로 모든 데이터를 동일하게 맞춰보겠습니다.&lt;br /&gt;&lt;br /&gt;우선, &lt;b&gt;2024-01-01&lt;/b&gt;부터 &lt;b&gt;2024-01-05&lt;/b&gt;까지의 데이터만을 필터링합니다:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1725170971640&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# '2024-01-01'부터 '2024-01-05'까지의 데이터 필터링
filtered_df = time_series_sampled_df_abc[
    (time_series_sampled_df_abc['Date'] &amp;gt;= '2024-01-01') &amp;amp; 
    (time_series_sampled_df_abc['Date'] &amp;lt;= '2024-01-05')
].reset_index(drop=True)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;그 후, 학습 가능한 형태인 &lt;b&gt;Numpy 3D 배열&lt;/b&gt;로 변환합니다:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1725170999305&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 클래스별로 데이터를 그룹화하고, 각각의 Value와 Date를 추출하여 numpy array로 변환
classes = filtered_df['Class'].unique()
date_count = len(filtered_df['Date'].unique())

# 빈 numpy array 생성
data_3d_array = np.zeros((len(classes), date_count, 2), dtype=object)

# 클래스별로 데이터를 numpy 3D array에 할당
for i, cls in enumerate(classes):
    class_data = filtered_df[filtered_df['Class'] == cls][['Value', 'Date']].to_numpy()
    data_3d_array[i, :len(class_data), :] = class_data

data_3d_array&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이제 &lt;b&gt;3D 배열&lt;/b&gt;은 다음과 같은 형태를 가집니다:&amp;nbsp;&amp;nbsp;&lt;br /&gt;- &lt;b&gt;5 (Date; x) x 3 (Feature; y) x &lt;/b&gt;&lt;b&gt;3 (Class; z)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;이와&amp;nbsp;같은&amp;nbsp;전처리를&amp;nbsp;통해,&amp;nbsp;모든&amp;nbsp;클래스의&amp;nbsp;데이터가&amp;nbsp;동일한&amp;nbsp;기간에&amp;nbsp;맞춰졌으며,&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;모델&amp;nbsp;학습을&amp;nbsp;위한&amp;nbsp;준비가&amp;nbsp;완료되었습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 우리는 시계열 데이터 분류(Time Series Classification, TSC)에 대해 기본 개념을 다루고, 간단한 예제를 통해 데이터 전처리 과정을 실습해 보았습니다. 각 클래스별 데이터를 동일한 기간으로 맞추는 것이 중요하며, 이를 통해 모델 학습에 적합한 형태로 데이터를 준비할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;이제 이렇게 전처리된 데이터를 사용해 다양한 머신러닝 또는 딥러닝 모델에 적용해 볼 수 있습니다. 예를 들어, &lt;b&gt;LSTM (Long Short-Term Memory) 네트워크&lt;/b&gt;와 같은 딥러닝 모델을 사용하여 시계열 데이터를 분류하는 것이 가능합니다. 또한, 다양한 피처 엔지니어링 기법을 사용해 데이터를 더욱 정제하고 성능을 향상시킬 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #0e0e0e;&quot; data-ke-size=&quot;size16&quot;&gt;추후 포스트에서는 이러한 모델링 과정과 추가적인 시계열 데이터의 고급 처리 기법들에 대해 다루도록 하겠습니다. 관심 있는 분들은 다음 포스트도 기대해 주세요!&lt;/p&gt;</description>
      <category>MACHINE LEARNING</category>
      <category>Time Series classification</category>
      <category>TSC</category>
      <category>시계열</category>
      <category>시계열 전처리</category>
      <category>전처리</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/61</guid>
      <comments>https://24bean.tistory.com/entry/Time-series-classification-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC#entry61comment</comments>
      <pubDate>Sun, 1 Sep 2024 15:12:07 +0900</pubDate>
    </item>
    <item>
      <title>LLaMA 3.1 사용법 - (with Ollama)</title>
      <link>https://24bean.tistory.com/entry/LLaMA-31-%EC%82%AC%EC%9A%A9%EB%B2%95-with-Ollama</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Llama 3은 8B, 70B의 두 종 (각 종별 2가지로 총 4가지)의 소형 버전 뿐이었더라면, 이번(3.1)에는 매개변수 4,050억개짜리 &lt;b&gt;Llama 3.1 405B&lt;/b&gt; 모델이 포함되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델은 &amp;lsquo;공개된&amp;rsquo; 모델 중 최대 규모의 모델로서, &lt;b&gt;GPT-4, Claude 3.5 Sonnet&lt;/b&gt; 등의 폐쇄형 모델 (Closed Model)과 대등한 성능을 보이는 것으로 알려져 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 모델 다운로드 및 설정 절차에 대해 이번 포스트에서는 알아봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqrVBR/btsIRuiBlQa/OkqeiAlEAkiVMcqx4lCpNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqrVBR/btsIRuiBlQa/OkqeiAlEAkiVMcqx4lCpNK/img.png&quot; data-alt=&quot;https://huggingface.co/meta-llama/Meta-Llama-3.1-405B&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqrVBR/btsIRuiBlQa/OkqeiAlEAkiVMcqx4lCpNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqrVBR%2FbtsIRuiBlQa%2FOkqeiAlEAkiVMcqx4lCpNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;680&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://huggingface.co/meta-llama/Meta-Llama-3.1-405B&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;모델 다운로드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 다운로드 홈페이지가 있긴 한데, 여기저기 들어가야하는 번거로움이 있으니 Huggingface에서 받아줍시다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTAfpv/btsIQy62UEe/WNsTYBx1Bhwz93HkgucHn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTAfpv/btsIQy62UEe/WNsTYBx1Bhwz93HkgucHn0/img.png&quot; data-alt=&quot;https://huggingface.co/meta-llama/Meta-Llama-3.1-405B&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTAfpv/btsIQy62UEe/WNsTYBx1Bhwz93HkgucHn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTAfpv%2FbtsIQy62UEe%2FWNsTYBx1Bhwz93HkgucHn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1283&quot; height=&quot;715&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://huggingface.co/meta-llama/Meta-Llama-3.1-405B&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 정보 입력하고 제출합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKEO2f/btsIQI2GPjY/CXkPM8ns2VmMclziyIKoI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKEO2f/btsIQI2GPjY/CXkPM8ns2VmMclziyIKoI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKEO2f/btsIQI2GPjY/CXkPM8ns2VmMclziyIKoI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKEO2f%2FbtsIQI2GPjY%2FCXkPM8ns2VmMclziyIKoI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;548&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Ollama&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Quantized llama을 providing하는 ollama에도 역시 빠르게 llama3.1이 올라왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ollama.com/library/llama3.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ollama.com/library/llama3.1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1722161663429&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;llama3.1&quot; data-og-description=&quot;Llama 3.1 is a new state-of-the-art model from Meta available in 8B, 70B and 405B parameter sizes.&quot; data-og-host=&quot;ollama.com&quot; data-og-source-url=&quot;https://ollama.com/library/llama3.1&quot; data-og-url=&quot;https://ollama.com/library/llama3.1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bACRk7/hyWG27etv5/xqPBrKv9qAVJBHaZ8ztoC1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bQgGse/hyWGPz3DAu/TmkNFuQbPqQUyu8YD65Kp1/img.png?width=3201&amp;amp;height=2217&amp;amp;face=0_0_3201_2217,https://scrap.kakaocdn.net/dn/bp3fuO/hyWGYjugQk/9qf2wxlly1MuWTUItJ7GGk/img.png?width=3201&amp;amp;height=2217&amp;amp;face=0_0_3201_2217&quot;&gt;&lt;a href=&quot;https://ollama.com/library/llama3.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ollama.com/library/llama3.1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bACRk7/hyWG27etv5/xqPBrKv9qAVJBHaZ8ztoC1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bQgGse/hyWGPz3DAu/TmkNFuQbPqQUyu8YD65Kp1/img.png?width=3201&amp;amp;height=2217&amp;amp;face=0_0_3201_2217,https://scrap.kakaocdn.net/dn/bp3fuO/hyWGYjugQk/9qf2wxlly1MuWTUItJ7GGk/img.png?width=3201&amp;amp;height=2217&amp;amp;face=0_0_3201_2217');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;llama3.1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Llama 3.1 is a new state-of-the-art model from Meta available in 8B, 70B and 405B parameter sizes.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ollama.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB8w8X/btsIQmFDlv6/DlcpJi1AIpZ8cawHWH3gc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB8w8X/btsIQmFDlv6/DlcpJi1AIpZ8cawHWH3gc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB8w8X/btsIQmFDlv6/DlcpJi1AIpZ8cawHWH3gc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB8w8X%2FbtsIQmFDlv6%2FDlcpJi1AIpZ8cawHWH3gc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;419&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하드웨어의 한계로 인해.. Quantized model을 써야하는 저같은 분들을 위한 글이 될겁니다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ollama 사용법은 아래와 같습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;macOS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. 다운로드: Ollama &lt;a href=&quot;https://ollama.com/library/llama3.1&quot;&gt;https://ollama.com/library/llama3.1&lt;/a&gt;&amp;nbsp;macOS용 파일을 다운로드합니다.&lt;br /&gt;2. 압축 해제: 다운로드한 zip 파일의 압축을 풉니다.&lt;br /&gt;3. 폴더 이동: 터미널을 열고 압축 해제한 폴더로 이동합니다.&lt;br /&gt;4. 실행: 다음 명령어를 입력하여 Ollama를 실행합니다:&lt;/p&gt;
&lt;pre id=&quot;code_1722161869802&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./ollama&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Linux&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. 터미널 실행: 터미널을 열고 아래 명령어를 입력합니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1722161933754&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl -fsSL https://ollama.com/install.sh | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;Docker&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. 공식 Docker 이미지 사용: 공식 Docker 이미지 `ollama/ollama`를 사용할 수 있습니다. Docker를 설치한 후, 아래 명령어를 사용하여 Ollama를 실행합니다:&lt;/p&gt;
&lt;pre id=&quot;code_1722161964592&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run ollama/ollama&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1722161989075&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ollama run llama3.1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Llama</category>
      <category>llama quantization</category>
      <category>llama3</category>
      <category>llama3.1</category>
      <category>ollama</category>
      <category>quantization</category>
      <category>라마</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/60</guid>
      <comments>https://24bean.tistory.com/entry/LLaMA-31-%EC%82%AC%EC%9A%A9%EB%B2%95-with-Ollama#entry60comment</comments>
      <pubDate>Sun, 28 Jul 2024 19:20:59 +0900</pubDate>
    </item>
    <item>
      <title>SaaS 에서의 RAG vs. Fine-Tuning 비교!</title>
      <link>https://24bean.tistory.com/entry/SaaS-%EC%97%90%EC%84%9C%EC%9D%98-RAG-vs-Fine-Tuning-%EB%B9%84%EA%B5%90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;유용한 AI SaaS Application을 구축하려면 모델이 사용자의 외부 데이터에 액세스할 수 있어야 합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;그렇다면, &lt;b&gt;RAG(Retreival Augemented Generation) vs. Fine-Tuning&lt;/b&gt; 중 어느것을 사용해야 할까요?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;이번 글에서는 &lt;b&gt;SaaS Application 관점&lt;/b&gt;에서 두 가지 접근 방식을 비교하고자 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt; &lt;b&gt;단순 비교만 원하시는 분은 마지막 Conclusion의 표를 확인하시면 됩니다&lt;/b&gt; &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Multi-Tenant (&lt;i&gt;&lt;span style=&quot;text-align: left;&quot;&gt;클라우드의 하나의 자원을 쪼개서 서비스 사용자에게 제공; 마치 하나의 집을 쪼개서 빌려주는 개념&lt;/span&gt;&lt;/i&gt;) AI SaaS Application을 구축하려는 경우, Prompt Engineering(프롬프트 엔지니어링)&lt;b&gt;에만 의존하는 한계를 경험했을 것입니다. &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적인 프롬프트를 완벽하게 작성하더라도, GPT-4, Llama-3 같은 범용 모델은 &lt;b&gt;사용자 고유의 데이터를 포함하지 않기&lt;/b&gt; 때문에 context가 부족하여 제한적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, AI 고객 서비스 챗봇을 판매한다고 가정해봅시다. 고객의 데이터(과거 대화, 제품 정보 등)에 접근할 수 없다면 챗봇은 쓸모가 없게 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통의 경우, 이러한 데이터는 고객의 CRM, 문서, 티켓 시스템 등 다른 애플리케이션에 저장되어 있죠.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;그렇다면 이러한 Context Data를 LLM에 어떻게 활용할 수 있을까요?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;제 3자 소스로부터의 데이터를 LLM과 함께&lt;/b&gt; 사용하는 주요 접근법은 &lt;b&gt;RAG와 Fine-Tuning&lt;/b&gt;입니다.&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;RAG vs. Fine-Tuning&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Retrieval Augmented Generation (RAG)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG는 외부 데이터를 &lt;b&gt;실시간&lt;/b&gt;으로 검색하여 프롬프트에 Context를 주입함으로써 대형 언어 모델의 정확성을 높이는 과정입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 데이터는 고객의 문서, 웹 페이지 등 다양한 소스에서 가져올 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blDzbW/btsHKjxE3n8/8T4dfKfwkLM03rtgKyrmN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blDzbW/btsHKjxE3n8/8T4dfKfwkLM03rtgKyrmN0/img.png&quot; data-alt=&quot;ref: https://pvml.com/glossary/retrieval-augmented-generation-rag/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blDzbW/btsHKjxE3n8/8T4dfKfwkLM03rtgKyrmN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblDzbW%2FbtsHKjxE3n8%2F8T4dfKfwkLM03rtgKyrmN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;875&quot; height=&quot;362&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ref: https://pvml.com/glossary/retrieval-augmented-generation-rag/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터 수집/저장&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;초기 수집 작업&lt;/b&gt;: 고객이 제공한 모든 관련 데이터를 초기 수집합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;백그라운드 작업&lt;/b&gt;: 새로운 정보가 생길 때마다 실시간으로 데이터를 업데이트합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;임베딩 및 저장&lt;/b&gt;: 수집한 데이터를 &lt;b&gt;벡터 데이터베이스&lt;/b&gt;에 저장하여 검색할 수 있도록 &lt;b&gt;임베딩&lt;/b&gt;을 생성합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;프롬프트 주입&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실시간 검색 및 주입&lt;/b&gt;: &lt;b&gt;벡터 데이터베이스&lt;/b&gt;에서 가장 관련성 높은 텍스트를 검색하여 초기 프롬프트에 주입합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Fine-Tuning&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Fine-Tuning은 사전 훈련된 LLM을 특정 도메인 데이터셋으로 추가 학습시켜 특정 작업에서 성능을 높이는 과정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w8zwO/btsHKdxwlja/7ptQKdeK7Rh9ZYN6TT9kw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w8zwO/btsHKdxwlja/7ptQKdeK7Rh9ZYN6TT9kw0/img.png&quot; data-alt=&quot;ref: https://neo4j.com/developer-blog/fine-tuning-retrieval-augmented-generation/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w8zwO/btsHKdxwlja/7ptQKdeK7Rh9ZYN6TT9kw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw8zwO%2FbtsHKdxwlja%2F7ptQKdeK7Rh9ZYN6TT9kw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;479&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ref: https://neo4j.com/developer-blog/fine-tuning-retrieval-augmented-generation/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;주요 차이점&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Fine-Tuning은 LLM의 파라미터를 수정하며, 배포 전에 수행됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Clean한 훈련 데이터셋을 얻는 것이 어렵고 시간이 많이 걸리지만, 예측 가능한 결과를 제공합니다.&lt;span style=&quot;text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;RAG&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도메인 특정 데이터셋을 바로 사용할 수 없다면, Fine-Tuning보다는 RAG를 우선시하는 것이 좋습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음과 같은 이유 때문입니다:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG는 &lt;b&gt;실시간&lt;/b&gt; 또는 거의 실시간의 Context를 프롬프트에 주입할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG는 &lt;b&gt;Clean하고 Structured 훈련 데이터셋이 필요하지 않습니다&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG는 여러 데이터 소스에서 &lt;b&gt;관련 Context를 검색&lt;/b&gt;할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그럼, 이제 RAG와&amp;nbsp;&lt;b&gt;구현 &lt;/b&gt;&lt;b&gt;방법&lt;/b&gt;을 조금&amp;nbsp;더 깊이 파헤쳐보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;RAG with Third-Party Data&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. Data Ingestion&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫 번째 단계는 유저의 &lt;b&gt;external contextual data&lt;/b&gt;가 어디에 있는지 파악하는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;(즉 내가 원하는 데이터는 어디있고, 그 중 어떤걸 사용할 것인지에 대한 명확한 정의가 필요합니다.)&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, product knowledge가 Notion 워크스페이스나 Google Drive의 온보딩 문서에 저장되어 있을 수도 있고, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;공통 Q&amp;amp;A는 Slack 스레드에, 판매 이메일은 Salesforce/Salesloft에, 통화 기록은 Gong이나 Zoom 등에 저장될 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어디에서 데이터를 가져올지 파악한 후에는 기존 데이터를 모두 &lt;b&gt;수집하고, 해당 데이터 소스의 업데이트를 반영하는 메커니즘&lt;/b&gt;을 구축해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터 수집 엔진을 구축&lt;/b&gt; 시 &lt;b&gt;고려사항:&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Authentication:&lt;/b&gt; 각 3자 API마다 OAuth 정책이 다르므로 항상 토큰을 갱신하여 연결 상태를 유지해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Webhooks/CRON jobs:&lt;/b&gt; 각 앱의 각 객체 유형에 대해 webhook listener나 CRON 작업을 설정하고, Activate 상태를 확인하는 모니터링 메커니즘을 구축해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Horizontal Scaling:&lt;/b&gt; 초기 수집 작업에서 모든 고객의 기존 데이터를 수집하면 수백만, 수십억 개의 요청이 한꺼번에 발생할 수 있습니다. 이러한 데이터를 처리할 수 있도록 인프라가 자동으로 확장되어 서버가 죽지 않도록 해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Rate Limits:&lt;/b&gt; 통합해야 하는 각 서드파티 API에는 속도 제한이 있을 수 있습니다. 만약 속도 제한에 걸릴 경우, 작업 실패를 방지하기 위해 auto-retry 및 Queuing 메커니즘을 갖추어야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Security:&lt;/b&gt; 수집한 데이터는 안전하게 저장되고 SaaS application의 multi-tenant 특성상 고객의 인스턴스 간에 격리되어야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Breaking Changes:&lt;/b&gt; 3자 API는 종종 변경 사항을 발표하므로 팀이 이를 신속하게 대응해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. Chunking (Tokenization)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대부분의 Contextual Data는 Unstructured Data이므로 대량의 문자열을 처리하게 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LLM의 짧은 Context Window 때문에 고객의 모든 데이터를 각 프롬프트에 주입할 수 없습니다(&lt;i&gt;비효율적이기도 합니다&lt;/i&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3. Generate Embedding&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG 프로세스가 실행 시 가장 관련성 높은 데이터를 검색할 수 있도록 청크를 벡터화하여 숫자 표현으로 변환해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이를 위해 사용할 수 있는 Embedding 모델은 많으며, Huggingface의 리더보드에서 최신 벤치마크 기반 상위 모델을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://huggingface.co/models?language=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/models?language=ko&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717310573773&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Models - Hugging Face&quot; data-og-description=&quot;&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/models?language=ko&quot; data-og-url=&quot;https://huggingface.co/models&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/L1hCV/hyWg2F1XGY/FWduSh1KnwiihM3s0yp761/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/models?language=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/models?language=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/L1hCV/hyWg2F1XGY/FWduSh1KnwiihM3s0yp761/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Models - Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. Storing in a Vector Database&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;수집한 데이터에서 Embedding을 생성한 후 이를 &lt;b&gt;Vector Database&lt;/b&gt;에 저장해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터를 벡터로 저장하면 대량의 데이터를 신속하게 유사성 검색할 수 있으며, 이는 방대한 지식 기반을 가진 &lt;b&gt;RAG에 필수적입니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.pinecone.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.pinecone.io&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717310654119&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;The vector database to build knowledgeable AI | Pinecone&quot; data-og-description=&quot;Search through billions of items for similar matches to any object, in milliseconds. It&amp;rsquo;s the next generation of search, an API call away.&quot; data-og-host=&quot;www.pinecone.io&quot; data-og-source-url=&quot;https://www.pinecone.io&quot; data-og-url=&quot;https://www.pinecone.io&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/S6kN1/hyWgYKnSOR/VWYoKGOBzQsMu77hGHhWt0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xYved/hyWdjJqPzd/TYWYzbO5MjiMeOrkm8WXt1/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/1tWVX/hyWdenOwE4/TV35ImGgjeJrlKyK1jEF2k/img.png?width=2624&amp;amp;height=1527&amp;amp;face=0_0_2624_1527&quot;&gt;&lt;a href=&quot;https://www.pinecone.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.pinecone.io&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/S6kN1/hyWgYKnSOR/VWYoKGOBzQsMu77hGHhWt0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/xYved/hyWdjJqPzd/TYWYzbO5MjiMeOrkm8WXt1/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/1tWVX/hyWdenOwE4/TV35ImGgjeJrlKyK1jEF2k/img.png?width=2624&amp;amp;height=1527&amp;amp;face=0_0_2624_1527');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;The vector database to build knowledgeable AI | Pinecone&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Search through billions of items for similar matches to any object, in milliseconds. It&amp;rsquo;s the next generation of search, an API call away.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.pinecone.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;5. Runtime Retrieval&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 시, 사용자가 쿼리를 보내면 해당 쿼리를 벡터화하여 벡터 데이터베이스에서 유사성 검색을 수행해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이를 통해 가장 관련성 높은 Context Chunk를 검색하고, 이를 선택한 LLM(e.g. GPT, Llama 등)의 프롬프트에 포함시킵니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 하면 LLM이 검색된 정보를 활용하여 사용자 쿼리에 대해 더 개인화되고 관련성 높은 포괄적인 응답을 생성할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Fine-Tuning&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이제 multi-tanent SaaS 에서 Fine-Tuning이 어떻게 작동하는지 살펴보겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음은 &lt;b&gt;Pre-trained model 을 Fine-Tuning&lt;/b&gt;하는 과정의 세부 사항입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. Data Ingestion&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG와 마찬가지로, 사용자의 외부 애플리케이션에서 데이터를 수집하여 &lt;b&gt;훈련 데이터셋을 구축&lt;/b&gt;해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;여기에는 판매 참여 플랫폼의 판매 이메일, Intercom의 대화 기록, CRM의 판매 성과 데이터 등이 포함될 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. Preparation&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;RAG와 달리, 이 데이터는 Fine-Tuning에 사용될 수 있도록 &lt;b&gt;준비되고 정리되어야 합니다&lt;/b&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적으로, 모델을 Fine-Tuning하기 위해 훈련, 검증, 테스트 데이터셋이 필요합니다. 다음은 훈련 데이터셋의 예시입니다:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AI 지원 챗봇을 위한 훈련 데이터셋&lt;/b&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Input: 고객에 대한 모든 접근 가능한 데이터와 제출한 티켓&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Output: 지원 담당자가 제공한 응답&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AI 콘텐츠 작성자를 위한 훈련 데이터셋&lt;/b&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Input: 고객의 블로그 개요&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Output: 해당 개요로 작성된 블로그 게시물&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 과정에서 가장 까다로운 점은 &lt;b&gt;테스트 데이터셋이 깨끗하고 최적의 입력만을 포함하도록 하는 것&lt;/b&gt;입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 때문에 일부 AI SaaS 회사는 고객과 함께 훈련 데이터셋을 검증하는 On-Boarding을 요구하기도 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Fine-Tune and Validate&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 회사에서는 기본 모델의 실제 파라미터를 수동으로 설정하는 것이 계산적으로 의미가 없습니다. 대신, Fine-Tuning(위에서 언급한 예시)을 통해 제한된 데이터셋으로도 기본 LLM을 훈련시킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델을&lt;span&gt; Fine-Tuning&lt;/span&gt;한&lt;span&gt; &lt;/span&gt;후에는&lt;span&gt; &lt;/span&gt;검증&lt;span&gt; &lt;/span&gt;세트를&lt;span&gt; &lt;/span&gt;사용하여&lt;span&gt; &lt;/span&gt;원하는&lt;span&gt; &lt;/span&gt;응답이&lt;span&gt; &lt;/span&gt;나오는지&lt;span&gt; &lt;/span&gt;테스트하고&lt;span&gt; &lt;/span&gt;검증해야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. &lt;/span&gt;결과가&lt;span&gt; &lt;/span&gt;만족스럽지&lt;span&gt; &lt;/span&gt;않으면&lt;span&gt; &lt;/span&gt;추가&lt;span&gt; &lt;/span&gt;데이터를&lt;span&gt; &lt;/span&gt;사용하여&lt;span&gt; &lt;/span&gt;모델을&lt;span&gt; &lt;/span&gt;계속&lt;span&gt; Fine-Tuning&lt;/span&gt;해야&lt;span&gt; &lt;/span&gt;하며&lt;span&gt;, &lt;/span&gt;제품&lt;span&gt; &lt;/span&gt;준비가&lt;span&gt; &lt;/span&gt;완료되면&lt;span&gt; Fine-Tuning&lt;/span&gt;된&lt;span&gt; &lt;/span&gt;모델을&lt;span&gt; &lt;/span&gt;배포합니다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. Reinforcement Learning&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영 중에는 &lt;b&gt;사용자 피드백을 통한 강화 학습&lt;/b&gt;&lt;b&gt;(RLHF&lt;/b&gt;) 루프를 도입할 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적인 형태로, &lt;b&gt;사용자가 받은 응답을 평가&lt;/b&gt;할 수 있는 기능을 제공하고, 그 &lt;b&gt;평가를&amp;nbsp;모델의 성능을 높이는데&amp;nbsp;활용&lt;/b&gt;할 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 이는 사용자의 행동, 예를 들어 사용자가 명확한 질문을 했는지, 사용자 감정, 또는 생성된 출력을 그대로 사용했는지 여부(특히 AI 콘텐츠 생성 맥락 내에서) 등에 기반하여 상당히 정교해질 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;※ 아래 링크를 따라 Fine-Tuning 을 위한 파이프라인을 코드와 함께 확인해보세요.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1717312481665&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Fine-tuning a Code LLM on Custom Code on a single GPU - Hugging Face Open-Source AI Cookbook&quot; data-og-description=&quot;LLM and RAG recipes with other Libraries&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&quot; data-og-url=&quot;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bYtvfn/hyWdmGaNVT/l5kLPvUqh3OcFUuf42hPhk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/learn/cookbook/fine_tuning_code_llm_on_single_gpu&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bYtvfn/hyWdmGaNVT/l5kLPvUqh3OcFUuf42hPhk/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Fine-tuning a Code LLM on Custom Code on a single GPU - Hugging Face Open-Source AI Cookbook&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LLM and RAG recipes with other Libraries&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;말이 길었지만, 결국 간단하게 정리하면 다음과 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;RAG&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;는 &lt;b&gt;빠르게 구현할 수 있고 실시간 정보&lt;/b&gt;를 제공할 수 있어 유연한 장점이 있지만, &lt;b&gt;복잡한 인프라와 보안 문제&lt;/b&gt;를 해결해야 합니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;반면, &lt;/span&gt;&lt;b&gt;Fine-Tuning&lt;/b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;은 특정 도메인에 &lt;b&gt;최적화된 성능&lt;/b&gt;을 제공하지만, &lt;b&gt;훈련 데이터셋 준비와 모델 업데이트에 많은 시간과 비용&lt;/b&gt;이 소요됩니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;대부분의 경우, 초기에는 RAG를 우선시하고, 필요에 따라 Fine-Tuning을 고려하는 것이 효율적일 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nH0rA/btsHLxBy3RR/bcRbJATrSDksVXtK2Z50XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nH0rA/btsHLxBy3RR/bcRbJATrSDksVXtK2Z50XK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nH0rA/btsHLxBy3RR/bcRbJATrSDksVXtK2Z50XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnH0rA%2FbtsHLxBy3RR%2FbcRbJATrSDksVXtK2Z50XK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;846&quot; height=&quot;441&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.useparagon.com/blog/rag-vs-finetuning-saas&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.useparagon.com/blog/rag-vs-finetuning-saas&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pvml.com/glossary/retrieval-augmented-generation-rag/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://pvml.com/glossary/retrieval-augmented-generation-rag/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://neo4j.com/developer-blog/fine-tuning-retrieval-augmented-generation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://neo4j.com/developer-blog/fine-tuning-retrieval-augmented-generation/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.matrixflows.com/blog/retrieval-augmented-generation-rag-finetuning-hybrid-framework-for-choosing-right-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.matrixflows.com/blog/retrieval-augmented-generation-rag-finetuning-hybrid-framework-for-choosing-right-strategy&lt;/a&gt;&lt;/p&gt;</description>
      <category>MACHINE LEARNING</category>
      <category>fine-tuning</category>
      <category>Rag</category>
      <category>SaaS</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/59</guid>
      <comments>https://24bean.tistory.com/entry/SaaS-%EC%97%90%EC%84%9C%EC%9D%98-RAG-vs-Fine-Tuning-%EB%B9%84%EA%B5%90#entry59comment</comments>
      <pubDate>Sun, 2 Jun 2024 16:13:50 +0900</pubDate>
    </item>
    <item>
      <title>구글 Gemma 사용법</title>
      <link>https://24bean.tistory.com/entry/%EA%B5%AC%EA%B8%80-Gemma-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Gemma란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;DeepMind, Google이 최근 Gemma를 공개했습니다. 이는 그 이전의 모델들과는 달리 open-weight architecture를 특징으로 하는 최신 대규모 언어 모델(LLM)입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ai.google.dev/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ai.google.dev/gemma&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708841512215&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Gemma - Google의 경량형 첨단 개방형 모델 제품군 &amp;nbsp;|&amp;nbsp; Google AI for Developers&quot; data-og-description=&quot;오픈소스 경량 언어 모델 제품군인 Gemma를 소개합니다. 빠른 시작 가이드, 벤치마크, Google Cloud에서 학습 및 배포를 살펴보고 커뮤니티에 참여하여 AI 연구를 발전시키세요.&quot; data-og-host=&quot;ai.google.dev&quot; data-og-source-url=&quot;https://ai.google.dev/gemma&quot; data-og-url=&quot;https://ai.google.dev/gemma?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Gd1YV/hyVmUKTFIP/N8t2jDlI9rCaCmB35w3b71/img.png?width=1440&amp;amp;height=900&amp;amp;face=0_0_1440_900&quot;&gt;&lt;a href=&quot;https://ai.google.dev/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ai.google.dev/gemma&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Gd1YV/hyVmUKTFIP/N8t2jDlI9rCaCmB35w3b71/img.png?width=1440&amp;amp;height=900&amp;amp;face=0_0_1440_900');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gemma - Google의 경량형 첨단 개방형 모델 제품군 &amp;nbsp;|&amp;nbsp; Google AI for Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오픈소스 경량 언어 모델 제품군인 Gemma를 소개합니다. 빠른 시작 가이드, 벤치마크, Google Cloud에서 학습 및 배포를 살펴보고 커뮤니티에 참여하여 AI 연구를 발전시키세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ai.google.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;사용법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google에서 공개한 LLM 답게 JAX를 사용하여 Gemma를 사용하실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론, Pytorch 혹은 C++등 다양한 수단을 통해서도 사용할 수 있도록 코드를 공개했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU,&amp;nbsp;GPU,&amp;nbsp;TPU&amp;nbsp;모두&amp;nbsp;호환이&amp;nbsp;됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추천하는 시스템 사양은 2B 체크포인트의 경우 GPU에서 8GB 이상의 RAM을, 7B 체크포인트의 경우 GPU에서 24GB 이상의 RAM을 권장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 Gemma 접근을 위한 Github repo를 공유합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;JAX&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/google-deepmind/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/google-deepmind/gemma&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708841758665&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - google-deepmind/gemma: Open weights LLM from Google DeepMind.&quot; data-og-description=&quot;Open weights LLM from Google DeepMind. Contribute to google-deepmind/gemma development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/google-deepmind/gemma&quot; data-og-url=&quot;https://github.com/google-deepmind/gemma&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dURGXa/hyVqmeFyFu/betpBhZwn6JlzLgt0DZKIK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/google-deepmind/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/google-deepmind/gemma&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dURGXa/hyVqmeFyFu/betpBhZwn6JlzLgt0DZKIK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - google-deepmind/gemma: Open weights LLM from Google DeepMind.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Open weights LLM from Google DeepMind. Contribute to google-deepmind/gemma development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Pytorch&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/google/gemma_pytorch?tab=readme-ov-file&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/google/gemma_pytorch?tab=readme-ov-file&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708841756058&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - google/gemma_pytorch: The official PyTorch implementation of Google's Gemma models&quot; data-og-description=&quot;The official PyTorch implementation of Google's Gemma models - google/gemma_pytorch&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/google/gemma_pytorch?tab=readme-ov-file&quot; data-og-url=&quot;https://github.com/google/gemma_pytorch&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brwg6Y/hyVmQ2Qgkn/GTQ5gkGuYXR88ncf2qp9B1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/google/gemma_pytorch?tab=readme-ov-file&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/google/gemma_pytorch?tab=readme-ov-file&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brwg6Y/hyVmQ2Qgkn/GTQ5gkGuYXR88ncf2qp9B1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - google/gemma_pytorch: The official PyTorch implementation of Google's Gemma models&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The official PyTorch implementation of Google's Gemma models - google/gemma_pytorch&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 Kaggle에 공개한 모델 카드 또한 공유합니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ekBfev/btsFgrdbJEP/QNLfxKswOdAoYyn5mlscA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ekBfev/btsFgrdbJEP/QNLfxKswOdAoYyn5mlscA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ekBfev/btsFgrdbJEP/QNLfxKswOdAoYyn5mlscA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekBfev%2FbtsFgrdbJEP%2FQNLfxKswOdAoYyn5mlscA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1182&quot; height=&quot;603&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.kaggle.com/models/google/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.kaggle.com/models/google/gemma&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708841798810&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Gemma&quot; data-og-description=&quot;Gemma is a family of lightweight, open models built from the research and technology that Google used to create the Gemini models.&quot; data-og-host=&quot;www.kaggle.com&quot; data-og-source-url=&quot;https://www.kaggle.com/models/google/gemma&quot; data-og-url=&quot;https://www.kaggle.com/models/google/gemma&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kaggle.com/models/google/gemma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kaggle.com/models/google/gemma&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gemma&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Gemma is a family of lightweight, open models built from the research and technology that Google used to create the Gemini models.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kaggle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Hugging Face - transformers&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU&lt;/p&gt;
&lt;pre id=&quot;code_1708841218429&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained(&quot;google/gemma-7b&quot;)
model = AutoModelForCausalLM.from_pretrained(&quot;google/gemma-7b&quot;)

input_text = &quot;Write me a poem about Machine Learning.&quot;
input_ids = tokenizer(input_text, return_tensors=&quot;pt&quot;)

outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPU&lt;/p&gt;
&lt;pre id=&quot;code_1708841248362&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained(&quot;google/gemma-7b&quot;)
model = AutoModelForCausalLM.from_pretrained(&quot;google/gemma-7b&quot;, device_map=&quot;auto&quot;)

input_text = &quot;Write me a poem about Machine Learning.&quot;
input_ids = tokenizer(input_text, return_tensors=&quot;pt&quot;).to(&quot;cuda&quot;)

outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Quantization&lt;/p&gt;
&lt;pre id=&quot;code_1708841284577&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(load_in_8bit=True)

tokenizer = AutoTokenizer.from_pretrained(&quot;google/gemma-7b&quot;)
model = AutoModelForCausalLM.from_pretrained(&quot;google/gemma-7b&quot;, quantization_config=quantization_config)

input_text = &quot;Write me a poem about Machine Learning.&quot;
input_ids = tokenizer(input_text, return_tensors=&quot;pt&quot;).to(&quot;cuda&quot;)

outputs = model.generate(**input_ids)
print(tokenizer.decode(outputs[0]))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 내용은 아래를 참조해주세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-7b&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/google/gemma-7b&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708841333653&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;google/gemma-7b &amp;middot; Hugging Face&quot; data-og-description=&quot;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged-in &quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/google/gemma-7b&quot; data-og-url=&quot;https://huggingface.co/google/gemma-7b&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QMCH6/hyVqqIaa52/OEp8K4og6jiwxRsM47IfRK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648&quot;&gt;&lt;a href=&quot;https://huggingface.co/google/gemma-7b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/google/gemma-7b&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QMCH6/hyVqqIaa52/OEp8K4og6jiwxRsM47IfRK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;google/gemma-7b &amp;middot; Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This repository is publicly accessible, but you have to accept the conditions to access its files and content. To access Gemma on Hugging Face, you&amp;rsquo;re required to review and agree to Google&amp;rsquo;s usage license. To do this, please ensure you&amp;rsquo;re logged-in&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Deepmind</category>
      <category>gemma</category>
      <category>Google</category>
      <category>LLM</category>
      <category>구글</category>
      <category>대규모언어모델</category>
      <category>젬마</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/58</guid>
      <comments>https://24bean.tistory.com/entry/%EA%B5%AC%EA%B8%80-Gemma-%EC%82%AC%EC%9A%A9%EB%B2%95#entry58comment</comments>
      <pubDate>Sun, 25 Feb 2024 15:18:56 +0900</pubDate>
    </item>
    <item>
      <title>IOPaint: 딥러닝 기반 이미지 인페인팅 오픈소스 툴 사용법</title>
      <link>https://24bean.tistory.com/entry/IOPaint-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EB%B0%98-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%9D%B8%ED%8E%98%EC%9D%B8%ED%8C%85-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%ED%88%B4-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GYL8c/btsEYYPNp2a/R3cHHGgZ107MzjMBUgvYJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GYL8c/btsEYYPNp2a/R3cHHGgZ107MzjMBUgvYJK/img.png&quot; data-alt=&quot;https://github.com/Sanster/IOPaint&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GYL8c/btsEYYPNp2a/R3cHHGgZ107MzjMBUgvYJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGYL8c%2FbtsEYYPNp2a%2FR3cHHGgZ107MzjMBUgvYJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;839&quot; height=&quot;768&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://github.com/Sanster/IOPaint&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;디지털 아트와 사진의 빠르게 발전하는 세계에서, 완벽한 이미지 편집 도구를 찾는 탐색은 끝이 없습니다. IOPaint는 이미지 편집 소프트웨어의 붐비는 공간에서 눈에 띄는 혁신적인 솔루션으로 등장했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IOPaint란 무엇인가요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IOPaint는&amp;nbsp;간단한&amp;nbsp;수정부터&amp;nbsp;복잡한&amp;nbsp;이미지&amp;nbsp;조작에&amp;nbsp;이르기까지&amp;nbsp;다양한&amp;nbsp;요구&amp;nbsp;사항을&amp;nbsp;충족시키기&amp;nbsp;위해&amp;nbsp;설계된&amp;nbsp;무료,&amp;nbsp;오픈&amp;nbsp;소스,&amp;nbsp;완전&amp;nbsp;자체&amp;nbsp;호스팅&amp;nbsp;이미지&amp;nbsp;편집&amp;nbsp;플랫폼입니다.&amp;nbsp;CPU,&amp;nbsp;GPU,&amp;nbsp;심지어&amp;nbsp;Apple&amp;nbsp;Silicon까지&amp;nbsp;지원하여,&amp;nbsp;어떤&amp;nbsp;하드웨어를&amp;nbsp;사용하든&amp;nbsp;AI의&amp;nbsp;전력을&amp;nbsp;활용하여&amp;nbsp;이미지를&amp;nbsp;변형할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;Windows&amp;nbsp;1-Click&amp;nbsp;Installer를&amp;nbsp;통해&amp;nbsp;IOPaint&amp;nbsp;설정이&amp;nbsp;간편해져,&amp;nbsp;모든&amp;nbsp;사람이&amp;nbsp;고급&amp;nbsp;이미지&amp;nbsp;편집에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 기능:&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;**AI&amp;nbsp;기반&amp;nbsp;모델:**&amp;nbsp;IOPaint는&amp;nbsp;이미지에서&amp;nbsp;원하지&amp;nbsp;않는&amp;nbsp;객체,&amp;nbsp;결함,&amp;nbsp;워터마크,&amp;nbsp;사람을&amp;nbsp;제거하는&amp;nbsp;등의&amp;nbsp;작업을&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;다양한&amp;nbsp;AI&amp;nbsp;모델을&amp;nbsp;통합합니다.&lt;br /&gt;-&amp;nbsp;**Erase&amp;nbsp;Models:**&amp;nbsp;이&amp;nbsp;모델들은&amp;nbsp;이미지를&amp;nbsp;정리하고&amp;nbsp;원하지&amp;nbsp;않는&amp;nbsp;요소를&amp;nbsp;제거하는&amp;nbsp;데&amp;nbsp;특화되어&amp;nbsp;있어,&amp;nbsp;사진을&amp;nbsp;매끄럽고&amp;nbsp;전문적으로&amp;nbsp;보이게&amp;nbsp;합니다.&lt;br /&gt;-&amp;nbsp;**Diffusion&amp;nbsp;Models:**&amp;nbsp;이미지의&amp;nbsp;경계를&amp;nbsp;확장하거나&amp;nbsp;객체를&amp;nbsp;교체하고자&amp;nbsp;하는&amp;nbsp;경우,&amp;nbsp;IOPaint는&amp;nbsp;놀라운&amp;nbsp;정확도와&amp;nbsp;세부&amp;nbsp;사항으로&amp;nbsp;outpaint&amp;nbsp;또는&amp;nbsp;inpaint할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;확산&amp;nbsp;모델을&amp;nbsp;제공합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;지원되는 모델:&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;IOPaint에서&amp;nbsp;지원하는&amp;nbsp;인기&amp;nbsp;모델&amp;nbsp;중&amp;nbsp;일부는&amp;nbsp;다음과&amp;nbsp;같습니다:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;runwayml/stable-diffusion-inpainting&lt;br /&gt;-&amp;nbsp;diffusers/stable-diffusion-xl-1.0-inpainting-0.1&lt;br /&gt;-&amp;nbsp;특정&amp;nbsp;편집&amp;nbsp;작업에&amp;nbsp;맞춰진&amp;nbsp;많은&amp;nbsp;다른&amp;nbsp;모델들&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;플러그인:&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IOPaint의&amp;nbsp;기능은&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;플러그인으로&amp;nbsp;더욱&amp;nbsp;향상됩니다:&lt;br /&gt;&lt;br /&gt;- Segment Anything: 빠르고 정확한 객체 분할을 위한 기능.&lt;br /&gt;- RemoveBG: 배경을 쉽게 제거하거나 전경 객체에 대한 마스크를 생성.&lt;br /&gt;- RealESRGAN &amp;amp; GFPGAN: 초고해상도 및 얼굴 복원을 위해, 이미지의 모든 세부 사항이 선명하고 깨끗하도록 보장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;IOPaint 시작하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;IOPaint를&amp;nbsp;사용하기&amp;nbsp;위한&amp;nbsp;시작&amp;nbsp;절차는&amp;nbsp;다음과&amp;nbsp;같습니다:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;빠른 설정:&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;IOPaint를&amp;nbsp;시작하는&amp;nbsp;것은&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;간단한&amp;nbsp;명령어로&amp;nbsp;가능합니다.&amp;nbsp;원하는&amp;nbsp;모델과&amp;nbsp;디바이스를&amp;nbsp;지정하여&amp;nbsp;IOPaint를&amp;nbsp;설치하고&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이&amp;nbsp;과정은&amp;nbsp;로컬&amp;nbsp;서버를&amp;nbsp;시작하여,&amp;nbsp;웹&amp;nbsp;브라우저를&amp;nbsp;통해&amp;nbsp;IOPaint에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708248678852&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# GPU를 사용하기 위해서는 먼저 CUDA 버전의 pytorch를 설치해야 합니다.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118
# AMD GPU 사용자는 리눅스에서만 작동하는 다음 명령어를 사용해야 합니다. Windows에서는 아직 pytorch가 ROCm을 지원하지 않습니다.
# pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/rocm5.6

pip3 install iopaint
iopaint start --model=lama --device=cpu --port=8080&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;자세한 사항은 github 공식 홈페이지를 참고해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reference:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/Sanster/IOPaint&quot;&gt;https://github.com/Sanster/IOPaint&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708248780730&quot; style=&quot;color: #333333; text-align: start;&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ImOg7/hyVjfuJ6CJ/71xTs1kkze3nBxNluEuj80/img.png?width=1280&amp;amp;height=899&amp;amp;face=0_0_1280_899&quot; data-og-url=&quot;https://github.com/Sanster/IOPaint&quot; data-og-source-url=&quot;https://github.com/Sanster/IOPaint&quot; data-og-host=&quot;github.com&quot; data-og-description=&quot;Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures. - Sanster...&quot; data-og-title=&quot;GitHub - Sanster/IOPaint: Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your p&quot; data-og-type=&quot;object&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://github.com/Sanster/IOPaint&quot; data-source-url=&quot;https://github.com/Sanster/IOPaint&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ImOg7/hyVjfuJ6CJ/71xTs1kkze3nBxNluEuj80/img.png?width=1280&amp;amp;height=899&amp;amp;face=0_0_1280_899');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - Sanster/IOPaint: Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your p&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures. - Sanster...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>image</category>
      <category>inpainting</category>
      <category>IOPaint</category>
      <category>stable diffusion</category>
      <category>영상</category>
      <category>인페인팅</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/57</guid>
      <comments>https://24bean.tistory.com/entry/IOPaint-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EA%B8%B0%EB%B0%98-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%9D%B8%ED%8E%98%EC%9D%B8%ED%8C%85-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%ED%88%B4-%EC%82%AC%EC%9A%A9%EB%B2%95#entry57comment</comments>
      <pubDate>Sun, 18 Feb 2024 18:33:42 +0900</pubDate>
    </item>
    <item>
      <title>완전한 오픈소스와 언어모델 / OLMo: Open Language Model</title>
      <link>https://24bean.tistory.com/entry/%EC%99%84%EC%A0%84%ED%95%9C-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EC%99%80-%EC%96%B8%EC%96%B4%EB%AA%A8%EB%8D%B8-OLMo-Open-Language-Model</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rOkX3/btsEEZ20x1Z/hSJOXKxE86aDA2FeJ5xbH1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rOkX3/btsEEZ20x1Z/hSJOXKxE86aDA2FeJ5xbH1/img.gif&quot; data-alt=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rOkX3/btsEEZ20x1Z/hSJOXKxE86aDA2FeJ5xbH1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/rOkX3/btsEEZ20x1Z/hSJOXKxE86aDA2FeJ5xbH1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;393&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 AI2는 Huggingface와 Github을 통해 대규모 언어 모델을 훈련하고 실험할 수 있는 프레임워크를 공개하며 첫번째 오픈 언어 모델(OLMo)를 출시했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크는 관련 논문 및 사이트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Github: &lt;a href=&quot;https://github.com/allenai/OLMo?tab=readme-ov-file?utm_source=pytorchkr#fine-tuning&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/allenai/OLMo&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707650665654&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - allenai/OLMo: Modeling, training, eval, and inference code for OLMo&quot; data-og-description=&quot;Modeling, training, eval, and inference code for OLMo - GitHub - allenai/OLMo: Modeling, training, eval, and inference code for OLMo&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/allenai/OLMo?tab=readme-ov-file?utm_source=pytorchkr#fine-tuning&quot; data-og-url=&quot;https://github.com/allenai/OLMo&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/du3NoT/hyVga77LpI/SSlBmY5rKV7ntcFD418Ri0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/allenai/OLMo?tab=readme-ov-file?utm_source=pytorchkr#fine-tuning&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/allenai/OLMo?tab=readme-ov-file?utm_source=pytorchkr#fine-tuning&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/du3NoT/hyVga77LpI/SSlBmY5rKV7ntcFD418Ri0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - allenai/OLMo: Modeling, training, eval, and inference code for OLMo&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Modeling, training, eval, and inference code for OLMo - GitHub - allenai/OLMo: Modeling, training, eval, and inference code for OLMo&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공개 블로그: &lt;a href=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707650692476&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OLMo: Open Language Model&quot; data-og-description=&quot;A State-Of-The-Art, Truly Open LLM and Framework&quot; data-og-host=&quot;blog.allenai.org&quot; data-og-source-url=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot; data-og-url=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dcBjDS/hyVgamJ2Xa/vZbaXltAsIb9oZiEEKt2DK/img.gif?width=720&amp;amp;height=404&amp;amp;face=0_0_720_404&quot;&gt;&lt;a href=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.allenai.org/olmo-open-language-model-87ccfc95f580&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dcBjDS/hyVgamJ2Xa/vZbaXltAsIb9oZiEEKt2DK/img.gif?width=720&amp;amp;height=404&amp;amp;face=0_0_720_404');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OLMo: Open Language Model&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A State-Of-The-Art, Truly Open LLM and Framework&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.allenai.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Huggingface 7B 모델: &lt;a href=&quot;https://huggingface.co/allenai/OLMo-7B?utm_source=pytorchkr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/allenai/OLMo-7B&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707650706714&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;allenai/OLMo-7B &amp;middot; Hugging Face&quot; data-og-description=&quot;Model Card for OLMo 7B OLMo is a series of Open Language Models designed to enable the science of language models. The OLMo models are trained on the Dolma dataset. We release all code, checkpoints, logs (coming soon), and details involved in training thes&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/allenai/OLMo-7B?utm_source=pytorchkr&quot; data-og-url=&quot;https://huggingface.co/allenai/OLMo-7B&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/olZAi/hyVjfUfIRa/pe1d0DwGgze05zUgzWSrRK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/ikXOq/hyVjnrdAl0/RoJffqk13OQjU2HthA8EW1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://huggingface.co/allenai/OLMo-7B?utm_source=pytorchkr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/allenai/OLMo-7B?utm_source=pytorchkr&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/olZAi/hyVjfUfIRa/pe1d0DwGgze05zUgzWSrRK/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/ikXOq/hyVjnrdAl0/RoJffqk13OQjU2HthA8EW1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;allenai/OLMo-7B &amp;middot; Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Model Card for OLMo 7B OLMo is a series of Open Language Models designed to enable the science of language models. The OLMo models are trained on the Dolma dataset. We release all code, checkpoints, logs (coming soon), and details involved in training thes&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문: &lt;a href=&quot;https://arxiv.org/abs/2402.00838?utm_source=pytorchkr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://arxiv.org/abs/2402.00838&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707650718214&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OLMo: Accelerating the Science of Language Models&quot; data-og-description=&quot;Language models (LMs) have become ubiquitous in both NLP research and in commercial product offerings. As their commercial importance has surged, the most powerful models have become closed off, gated behind proprietary interfaces, with important details o&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/2402.00838?utm_source=pytorchkr&quot; data-og-url=&quot;https://arxiv.org/abs/2402.00838v2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UUIQz/hyVjjWDrj8/tnNu1fAAKbQh36AZrDKo7k/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/u495k/hyVjdoBCwy/R3MntF6XVdnn0M9XTon1Bk/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2402.00838?utm_source=pytorchkr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/2402.00838?utm_source=pytorchkr&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UUIQz/hyVjjWDrj8/tnNu1fAAKbQh36AZrDKo7k/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/u495k/hyVjdoBCwy/R3MntF6XVdnn0M9XTon1Bk/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OLMo: Accelerating the Science of Language Models&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Language models (LMs) have become ubiquitous in both NLP research and in commercial product offerings. As their commercial importance has surged, the most powerful models have become closed off, gated behind proprietary interfaces, with important details o&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 설명은 오히려 첨부한 공개 블로그를 참조하시면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래에 해당 논문의 Abstract을 첨부합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emIVou/btsEFPeAvzA/Q7cTMnGVY0ZJjQxdATvnSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emIVou/btsEFPeAvzA/Q7cTMnGVY0ZJjQxdATvnSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emIVou/btsEFPeAvzA/Q7cTMnGVY0ZJjQxdATvnSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FemIVou%2FbtsEFPeAvzA%2FQ7cTMnGVY0ZJjQxdATvnSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;994&quot; height=&quot;172&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uFrHj/btsEIRiaEmF/9MpIerTYkhHayFUwScwLTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uFrHj/btsEIRiaEmF/9MpIerTYkhHayFUwScwLTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uFrHj/btsEIRiaEmF/9MpIerTYkhHayFUwScwLTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuFrHj%2FbtsEIRiaEmF%2F9MpIerTYkhHayFUwScwLTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;823&quot; height=&quot;415&quot; data-origin-width=&quot;823&quot; data-origin-height=&quot;415&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어&amp;nbsp;모델들은&amp;nbsp;이제&amp;nbsp;NLP&amp;nbsp;연구와&amp;nbsp;상업적&amp;nbsp;제품&amp;nbsp;모두에&amp;nbsp;없어서는&amp;nbsp;안&amp;nbsp;될&amp;nbsp;존재가&amp;nbsp;되었습니다.&amp;nbsp;그러나&amp;nbsp;상업적&amp;nbsp;가치가&amp;nbsp;커짐에&amp;nbsp;따라,&amp;nbsp;가장&amp;nbsp;성능이&amp;nbsp;뛰어난&amp;nbsp;모델들은&amp;nbsp;독점&amp;nbsp;인터페이스&amp;nbsp;뒤로&amp;nbsp;숨겨지고,&amp;nbsp;그&amp;nbsp;훈련&amp;nbsp;데이터,&amp;nbsp;구조,&amp;nbsp;그리고&amp;nbsp;개발&amp;nbsp;과정에&amp;nbsp;대한&amp;nbsp;중요&amp;nbsp;정보는&amp;nbsp;비공개로&amp;nbsp;남아있습니다.&amp;nbsp;이러한&amp;nbsp;정보는&amp;nbsp;모델의&amp;nbsp;편향성과&amp;nbsp;잠재적&amp;nbsp;위험을&amp;nbsp;포함하여&amp;nbsp;과학적으로&amp;nbsp;연구하는&amp;nbsp;데&amp;nbsp;매우&amp;nbsp;중요하기&amp;nbsp;때문에,&amp;nbsp;우리는&amp;nbsp;연구&amp;nbsp;커뮤니티가&amp;nbsp;강력하면서&amp;nbsp;완전히&amp;nbsp;개방된&amp;nbsp;언어&amp;nbsp;모델에&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있어야&amp;nbsp;한다고&amp;nbsp;생각합니다.&amp;nbsp;이런&amp;nbsp;맥락에서,&amp;nbsp;우리는&amp;nbsp;언어&amp;nbsp;모델링의&amp;nbsp;과학을&amp;nbsp;구축하고&amp;nbsp;탐구하기&amp;nbsp;위한&amp;nbsp;프레임워크와&amp;nbsp;함께,&amp;nbsp;최신&amp;nbsp;기술의&amp;nbsp;진정으로&amp;nbsp;개방된&amp;nbsp;언어&amp;nbsp;모델인&amp;nbsp;OLMo의&amp;nbsp;첫&amp;nbsp;출시를&amp;nbsp;상세히&amp;nbsp;소개하는&amp;nbsp;이&amp;nbsp;기술&amp;nbsp;보고서를&amp;nbsp;준비했습니다.&amp;nbsp;이전의&amp;nbsp;많은&amp;nbsp;시도들이&amp;nbsp;모델&amp;nbsp;가중치와&amp;nbsp;추론&amp;nbsp;코드만&amp;nbsp;공개한&amp;nbsp;것과&amp;nbsp;달리,&amp;nbsp;우리는&amp;nbsp;OLMo와&amp;nbsp;그에&amp;nbsp;따른&amp;nbsp;전체&amp;nbsp;프레임워크,&amp;nbsp;훈련&amp;nbsp;데이터,&amp;nbsp;그리고&amp;nbsp;훈련&amp;nbsp;및&amp;nbsp;평가&amp;nbsp;코드까지&amp;nbsp;포함하여&amp;nbsp;공개함으로써,&amp;nbsp;개방&amp;nbsp;연구&amp;nbsp;커뮤니티를&amp;nbsp;지원하고&amp;nbsp;새로운&amp;nbsp;혁신의&amp;nbsp;물결을&amp;nbsp;일으킬&amp;nbsp;수&amp;nbsp;있기를&amp;nbsp;바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Dataset (Dolma)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 프로젝트의 가장 주목할 점은 Pre-training 시 사용했던 데이터셋을 완전히 공개했다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXHzJg/btsEFSvvkiT/aXiAryJqfO48799gyRxUO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXHzJg/btsEFSvvkiT/aXiAryJqfO48799gyRxUO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXHzJg/btsEFSvvkiT/aXiAryJqfO48799gyRxUO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXHzJg%2FbtsEFSvvkiT%2FaXiAryJqfO48799gyRxUO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1052&quot; height=&quot;621&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;621&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGKr3v/btsEFdNy23k/p97wyIntR9QEtJdibtu9TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGKr3v/btsEFdNy23k/p97wyIntR9QEtJdibtu9TK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGKr3v/btsEFdNy23k/p97wyIntR9QEtJdibtu9TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGKr3v%2FbtsEFdNy23k%2Fp97wyIntR9QEtJdibtu9TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;781&quot; height=&quot;517&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ref: &lt;a href=&quot;https://huggingface.co/datasets/allenai/dolma&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://huggingface.co/datasets/allenai/dolma&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1707651022959&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;allenai/dolma &amp;middot; Datasets at Hugging Face&quot; data-og-description=&quot;You need to agree to share your contact information to access this dataset This repository is publicly accessible, but you have to accept the conditions to access its files and content. Access to this dataset is automatically granted upon accepting the AI2&quot; data-og-host=&quot;huggingface.co&quot; data-og-source-url=&quot;https://huggingface.co/datasets/allenai/dolma&quot; data-og-url=&quot;https://huggingface.co/datasets/allenai/dolma&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hkqSk/hyVjkOOEKm/tD9qiVF5XHgiB33BHqjaK0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/V0Qye/hyVjhEwCxz/wsB99Krguy8chaK6cPoRtk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/cAI8w1/hyVjhxLEiC/5HKGx7Qu4iFAKOYCkmcLwk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://huggingface.co/datasets/allenai/dolma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://huggingface.co/datasets/allenai/dolma&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hkqSk/hyVjkOOEKm/tD9qiVF5XHgiB33BHqjaK0/img.png?width=1200&amp;amp;height=648&amp;amp;face=0_0_1200_648,https://scrap.kakaocdn.net/dn/V0Qye/hyVjhEwCxz/wsB99Krguy8chaK6cPoRtk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/cAI8w1/hyVjhxLEiC/5HKGx7Qu4iFAKOYCkmcLwk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;allenai/dolma &amp;middot; Datasets at Hugging Face&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;You need to agree to share your contact information to access this dataset This repository is publicly accessible, but you have to accept the conditions to access its files and content. Access to this dataset is automatically granted upon accepting the AI2&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;huggingface.co&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같은 방법으로 다운로드 하실 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1707651080752&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DATA_DIR=&quot;&amp;lt;path_to_your_data_directory&amp;gt;&quot;
PARALLEL_DOWNLOADS=&quot;&amp;lt;number_of_parallel_downloads&amp;gt;&quot;
DOLMA_VERSION=&quot;&amp;lt;version_of_dolma_to_download&amp;gt;&quot;

git clone https://huggingface.co/datasets/allenai/dolma
mkdir -p &quot;${DATA_DIR}&quot;


cat &quot;dolma/urls/${DOLMA_VERSION}.txt&quot; | xargs -n 1 -P &quot;${PARALLEL_DOWNLOADS}&quot; wget -q -P &quot;$DATA_DIR&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Load (Python)&lt;/p&gt;
&lt;pre id=&quot;code_1707651110940&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
from datasets import load_dataset

os.environ[&quot;DATA_DIR&quot;] = &quot;&amp;lt;path_to_your_data_directory&amp;gt;&quot;
dataset = load_dataset(&quot;allenai/dolma&quot;, split=&quot;train&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MACHINE LEARNING</category>
      <category>DataSet</category>
      <category>LLM</category>
      <category>lm</category>
      <category>OLMo</category>
      <category>Open Source</category>
      <category>공개 데이터셋</category>
      <category>대규모 언어모델</category>
      <category>데이터셋</category>
      <category>언어모델</category>
      <category>오픈소스</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/56</guid>
      <comments>https://24bean.tistory.com/entry/%EC%99%84%EC%A0%84%ED%95%9C-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4%EC%99%80-%EC%96%B8%EC%96%B4%EB%AA%A8%EB%8D%B8-OLMo-Open-Language-Model#entry56comment</comments>
      <pubDate>Sun, 11 Feb 2024 20:33:13 +0900</pubDate>
    </item>
    <item>
      <title>대화형 에이전트(Conversational Agent)란?</title>
      <link>https://24bean.tistory.com/entry/%EB%8C%80%ED%99%94%ED%98%95-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8Conversational-Agent%EB%9E%80</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대화형&amp;nbsp;에이전트(Conversational&amp;nbsp;Agent)란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;대화형&amp;nbsp;에이전트,&amp;nbsp;&lt;b&gt;종종&amp;nbsp;챗봇(Chatbot)이라고&amp;nbsp;불리는&amp;nbsp;것은&amp;nbsp;자연어를&amp;nbsp;통해&amp;nbsp;사용자와&amp;nbsp;대화를&amp;nbsp;시뮬레이션할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;인공지능(AI)&amp;nbsp;소프트웨어의&amp;nbsp;일종&lt;/b&gt;입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한&amp;nbsp;에이전트는&amp;nbsp;메시징&amp;nbsp;애플리케이션,&amp;nbsp;웹사이트,&amp;nbsp;모바일&amp;nbsp;앱&amp;nbsp;또는&amp;nbsp;전화를&amp;nbsp;통해&amp;nbsp;사용자와&amp;nbsp;자연스러운&amp;nbsp;대화를&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화형&amp;nbsp;에이전트는&amp;nbsp;고객&amp;nbsp;서비스,&amp;nbsp;요청&amp;nbsp;라우팅,&amp;nbsp;정보&amp;nbsp;수집&amp;nbsp;및&amp;nbsp;의료&amp;nbsp;및&amp;nbsp;금융&amp;nbsp;부문에서&amp;nbsp;증상&amp;nbsp;확인,&amp;nbsp;온라인&amp;nbsp;거래와&amp;nbsp;같은&amp;nbsp;작업을&amp;nbsp;위해&amp;nbsp;점점&amp;nbsp;더&amp;nbsp;많이&amp;nbsp;사용되고&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z9XUn/btsEm6HdKxH/2YscrKU1xcZPnCqJtkXJnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z9XUn/btsEm6HdKxH/2YscrKU1xcZPnCqJtkXJnK/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://www.dashbot.io/blog/conversational-agent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z9XUn/btsEm6HdKxH/2YscrKU1xcZPnCqJtkXJnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz9XUn%2FbtsEm6HdKxH%2F2YscrKU1xcZPnCqJtkXJnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;917&quot; height=&quot;561&quot; data-origin-width=&quot;917&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://www.dashbot.io/blog/conversational-agent&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대화형 에이전트(Conversational Agent)의 유형&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;대화형&amp;nbsp;에이전트는&amp;nbsp;크게&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;범주로&amp;nbsp;분류될&amp;nbsp;수&amp;nbsp;있습니다:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;규칙&amp;nbsp;기반&amp;nbsp;에이전트(Rule-Based&amp;nbsp;Agents):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한&amp;nbsp;에이전트는&amp;nbsp;사전&amp;nbsp;정의된&amp;nbsp;규칙을&amp;nbsp;따르며&amp;nbsp;특정&amp;nbsp;작업에&amp;nbsp;제한되는&amp;nbsp;경우가&amp;nbsp;많습니다.&amp;nbsp;사용자&amp;nbsp;입력을&amp;nbsp;응답&amp;nbsp;데이터베이스와&amp;nbsp;일치시켜&amp;nbsp;간단한&amp;nbsp;질문과&amp;nbsp;명령을&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;프로그램된&amp;nbsp;규칙을&amp;nbsp;넘어서&amp;nbsp;복잡한&amp;nbsp;대화를&amp;nbsp;이해하거나&amp;nbsp;처리하는&amp;nbsp;능력은&amp;nbsp;없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;-&amp;nbsp;AI&amp;nbsp;기반&amp;nbsp;에이전트(AI-Powered&amp;nbsp;Agents):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한&amp;nbsp;에이전트는&amp;nbsp;머신러닝(Machine&amp;nbsp;Learning)과&amp;nbsp;자연어&amp;nbsp;처리(Natural&amp;nbsp;Language&amp;nbsp;Processing,&amp;nbsp;NLP)를&amp;nbsp;사용하여&amp;nbsp;사용자의&amp;nbsp;질문을&amp;nbsp;이해하고&amp;nbsp;응답합니다.&amp;nbsp;과거&amp;nbsp;상호작용에서&amp;nbsp;배우고,&amp;nbsp;더&amp;nbsp;복잡한&amp;nbsp;대화를&amp;nbsp;처리하고,&amp;nbsp;맥락을&amp;nbsp;이해하며,&amp;nbsp;개인화된&amp;nbsp;응답을&amp;nbsp;제공할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsxw2a/btsEj80obTY/IF73ov2tBZyeiKoNQfKzn1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsxw2a/btsEj80obTY/IF73ov2tBZyeiKoNQfKzn1/img.jpg&quot; data-alt=&quot;출처:&amp;amp;nbsp;https://gptpluginz.com/llm-agents/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsxw2a/btsEj80obTY/IF73ov2tBZyeiKoNQfKzn1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsxw2a%2FbtsEj80obTY%2FIF73ov2tBZyeiKoNQfKzn1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;562&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처:&amp;nbsp;https://gptpluginz.com/llm-agents/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대화형 에이전트(&lt;b&gt;Conversational Agent)&lt;/b&gt;의 작동 방식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;대화형&amp;nbsp;에이전트는&amp;nbsp;사용자&amp;nbsp;입력을&amp;nbsp;처리하고,&amp;nbsp;맥락과&amp;nbsp;의도를&amp;nbsp;이해하며,&amp;nbsp;가능한&amp;nbsp;한&amp;nbsp;인간&amp;nbsp;같은&amp;nbsp;응답을&amp;nbsp;생성하는&amp;nbsp;과정을&amp;nbsp;거칩니다.&amp;nbsp;이&amp;nbsp;과정은&amp;nbsp;일반적으로&amp;nbsp;다음&amp;nbsp;단계를&amp;nbsp;포함합니다:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;사용자&amp;nbsp;입력(User&amp;nbsp;Input):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가&amp;nbsp;텍스트나&amp;nbsp;음성을&amp;nbsp;사용하여&amp;nbsp;에이전트와&amp;nbsp;상호작용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;의도&amp;nbsp;인식(Intent&amp;nbsp;Recognition):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트는&amp;nbsp;NLP를&amp;nbsp;사용하여&amp;nbsp;입력을&amp;nbsp;분석하고&amp;nbsp;사용자의&amp;nbsp;의도를&amp;nbsp;파악합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;맥락&amp;nbsp;이해(Context&amp;nbsp;Understanding):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트는&amp;nbsp;대화의&amp;nbsp;맥락을&amp;nbsp;평가합니다.&amp;nbsp;여기에는&amp;nbsp;사용자의&amp;nbsp;이전&amp;nbsp;상호작용,&amp;nbsp;선호도&amp;nbsp;및&amp;nbsp;대화의&amp;nbsp;현재&amp;nbsp;상태가&amp;nbsp;포함될&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;응답&amp;nbsp;생성(Response&amp;nbsp;Generation):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의도와&amp;nbsp;맥락에&amp;nbsp;기반하여,&amp;nbsp;에이전트는&amp;nbsp;적절한&amp;nbsp;응답을&amp;nbsp;만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;사용자&amp;nbsp;피드백(User&amp;nbsp;Feedback):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트의&amp;nbsp;메시지에&amp;nbsp;대한&amp;nbsp;사용자의&amp;nbsp;응답은&amp;nbsp;미래의&amp;nbsp;상호작용을&amp;nbsp;개선하는&amp;nbsp;데&amp;nbsp;사용될&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;피드백을&amp;nbsp;제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q7j7H/btsElKrs2Ap/scrGbzI9DAHl8VeGVgaHf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q7j7H/btsElKrs2Ap/scrGbzI9DAHl8VeGVgaHf1/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://www.dashbot.io/blog/conversational-agent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q7j7H/btsElKrs2Ap/scrGbzI9DAHl8VeGVgaHf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq7j7H%2FbtsElKrs2Ap%2FscrGbzI9DAHl8VeGVgaHf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;882&quot; height=&quot;531&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://www.dashbot.io/blog/conversational-agent&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대화형 에이전트의 응용 및 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화형&amp;nbsp;에이전트는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;다양한&amp;nbsp;응용&amp;nbsp;분야에서&amp;nbsp;사용되고&amp;nbsp;있습니다:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;고객&amp;nbsp;지원(Customer&amp;nbsp;Support):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객&amp;nbsp;질문에&amp;nbsp;답하고&amp;nbsp;문제를&amp;nbsp;해결하며&amp;nbsp;사용자를&amp;nbsp;안내하는&amp;nbsp;24/7&amp;nbsp;지원을&amp;nbsp;제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;전자상거래(E-commerce):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객이&amp;nbsp;제품&amp;nbsp;검색,&amp;nbsp;추천&amp;nbsp;및&amp;nbsp;구매를&amp;nbsp;돕습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;의료(Healthcare):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의료 조언,&amp;nbsp;증상 확인 및 예약 일정을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;금융&amp;nbsp;및&amp;nbsp;금융(Banking&amp;nbsp;and&amp;nbsp;Finance):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인&amp;nbsp;거래,&amp;nbsp;계좌&amp;nbsp;조회&amp;nbsp;및&amp;nbsp;재무&amp;nbsp;상담을&amp;nbsp;촉진합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;개인&amp;nbsp;비서(Personal&amp;nbsp;Assistants):&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일상적인&amp;nbsp;작업을&amp;nbsp;돕습니다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;알림&amp;nbsp;설정,&amp;nbsp;음악&amp;nbsp;재생,&amp;nbsp;날씨&amp;nbsp;업데이트&amp;nbsp;제공&amp;nbsp;등입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecLYoj/btsEmN10XFP/0cnRScsV7UVJVGYOKY84W1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecLYoj/btsEmN10XFP/0cnRScsV7UVJVGYOKY84W1/img.png&quot; data-alt=&quot;출처 :&amp;amp;nbsp;https://www.dashbot.io/blog/conversational-agent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecLYoj/btsEmN10XFP/0cnRScsV7UVJVGYOKY84W1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecLYoj%2FbtsEmN10XFP%2F0cnRScsV7UVJVGYOKY84W1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;877&quot; height=&quot;306&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처 :&amp;nbsp;https://www.dashbot.io/blog/conversational-agent&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;대화형&amp;nbsp;에이전트의&amp;nbsp;미래&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;대화형&amp;nbsp;에이전트의&amp;nbsp;미래는&amp;nbsp;AI와&amp;nbsp;NLP의&amp;nbsp;발전으로&amp;nbsp;더욱&amp;nbsp;향상될&amp;nbsp;것으로&amp;nbsp;보이며,&amp;nbsp;이러한&amp;nbsp;에이전트가&amp;nbsp;더욱&amp;nbsp;정교해지면서&amp;nbsp;다양한&amp;nbsp;산업에서&amp;nbsp;중요한&amp;nbsp;역할을&amp;nbsp;할&amp;nbsp;것으로&amp;nbsp;예상됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인화되고&amp;nbsp;맥락을&amp;nbsp;인식하는&amp;nbsp;인간&amp;nbsp;대화와&amp;nbsp;유사한&amp;nbsp;상호작용을&amp;nbsp;제공함으로써,&amp;nbsp;이들은&amp;nbsp;고객&amp;nbsp;서비스,&amp;nbsp;생산성&amp;nbsp;및&amp;nbsp;전반적인&amp;nbsp;사용자&amp;nbsp;경험에&amp;nbsp;큰&amp;nbsp;영향을&amp;nbsp;미칠&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;잠재력을&amp;nbsp;가지고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;또한&amp;nbsp;음성&amp;nbsp;인식&amp;nbsp;기술이&amp;nbsp;개선됨에&amp;nbsp;따라&amp;nbsp;음성&amp;nbsp;기반&amp;nbsp;대화형&amp;nbsp;에이전트가&amp;nbsp;더&amp;nbsp;널리&amp;nbsp;사용될&amp;nbsp;것으로&amp;nbsp;예상되며,&amp;nbsp;이는&amp;nbsp;사용자에게&amp;nbsp;손쉬운&amp;nbsp;지원과&amp;nbsp;접근성&amp;nbsp;옵션을&amp;nbsp;제공할&amp;nbsp;것입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화형&amp;nbsp;에이전트가&amp;nbsp;증강&amp;nbsp;현실(AR)&amp;nbsp;및&amp;nbsp;가상&amp;nbsp;현실(VR)과&amp;nbsp;같은&amp;nbsp;다른&amp;nbsp;신흥&amp;nbsp;기술과&amp;nbsp;통합되면&amp;nbsp;사용자&amp;nbsp;참여와&amp;nbsp;몰입형&amp;nbsp;경험을&amp;nbsp;위한&amp;nbsp;새로운&amp;nbsp;가능성도&amp;nbsp;열릴&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;결론적으로, 대화형 에이전트는 우리가 기술과 상호작용하는 방식을 변화시키고 있으며, 더 자연스럽고 사용자 친화적인 방식으로 발전함에 따라 중요한 영향을 미칠 잠재력을 가지고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706946051265&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Conversational Agent&quot; data-og-description=&quot;A conversational agent is any dialogue system that not only conducts natural language processing but also responds automatically using human language.&quot; data-og-host=&quot;deepai.org&quot; data-og-source-url=&quot;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&quot; data-og-url=&quot;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2iv0N/hyVb6cDCqR/Kto8Ul9tsQXC6Paw4QrO0k/img.png?width=684&amp;amp;height=603&amp;amp;face=0_0_684_603,https://scrap.kakaocdn.net/dn/c8buNQ/hyVb4z4MNS/6KAnSz0lay31SzbQHKTJk1/img.png?width=684&amp;amp;height=603&amp;amp;face=0_0_684_603&quot;&gt;&lt;a href=&quot;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://deepai.org/machine-learning-glossary-and-terms/conversational-agent&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2iv0N/hyVb6cDCqR/Kto8Ul9tsQXC6Paw4QrO0k/img.png?width=684&amp;amp;height=603&amp;amp;face=0_0_684_603,https://scrap.kakaocdn.net/dn/c8buNQ/hyVb4z4MNS/6KAnSz0lay31SzbQHKTJk1/img.png?width=684&amp;amp;height=603&amp;amp;face=0_0_684_603');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Conversational Agent&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A conversational agent is any dialogue system that not only conducts natural language processing but also responds automatically using human language.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;deepai.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gptpluginz.com/llm-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gptpluginz.com/llm-agents/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706946131554&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;What Are LLM Agents ? An Overview of Their Capabilities&quot; data-og-description=&quot;Did you know that as early as the 18th century, philosopher Denis Diderot pondered the nature of intelligence, suggesting that&quot; data-og-host=&quot;gptpluginz.com&quot; data-og-source-url=&quot;https://gptpluginz.com/llm-agents/&quot; data-og-url=&quot;https://gptpluginz.com/llm-agents/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dH6v1N/hyVf1hpqJz/uumZAjt7ibefl9d3RlTLDK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024,https://scrap.kakaocdn.net/dn/bN5Dhr/hyVf9fr60g/A2rhCPlrGXqv7jnugPG3LK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024,https://scrap.kakaocdn.net/dn/bXamS0/hyVgccamcy/u9Ps7mkrvPHyFKt6BT9uXK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024&quot;&gt;&lt;a href=&quot;https://gptpluginz.com/llm-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gptpluginz.com/llm-agents/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dH6v1N/hyVf1hpqJz/uumZAjt7ibefl9d3RlTLDK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024,https://scrap.kakaocdn.net/dn/bN5Dhr/hyVf9fr60g/A2rhCPlrGXqv7jnugPG3LK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024,https://scrap.kakaocdn.net/dn/bXamS0/hyVgccamcy/u9Ps7mkrvPHyFKt6BT9uXK/img.jpg?width=1792&amp;amp;height=1024&amp;amp;face=0_0_1792_1024');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;What Are LLM Agents ? An Overview of Their Capabilities&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Did you know that as early as the 18th century, philosopher Denis Diderot pondered the nature of intelligence, suggesting that&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gptpluginz.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Agent</category>
      <category>Chatbot</category>
      <category>Conversational agent</category>
      <category>LLM</category>
      <category>대화형 에이전트</category>
      <category>에이전트</category>
      <category>챗봇</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/55</guid>
      <comments>https://24bean.tistory.com/entry/%EB%8C%80%ED%99%94%ED%98%95-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8Conversational-Agent%EB%9E%80#entry55comment</comments>
      <pubDate>Sat, 3 Feb 2024 16:42:42 +0900</pubDate>
    </item>
    <item>
      <title>논문 리뷰 / RAG VS FINE-TUNING: PIPELINES, TRADEOFFS, AND A CASESTUDY ON AGRICULTURE</title>
      <link>https://24bean.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-RAG-VS-FINE-TUNING-PIPELINES-TRADEOFFS-AND-A-CASESTUDY-ON-AGRICULTURE</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Original Paper:&lt;/b&gt; &lt;a href=&quot;https://arxiv.org/abs/2401.08406&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://arxiv.org/abs/2401.08406&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1706422498731&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;RAG vs Fine-tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture&quot; data-og-description=&quot;There are two common ways in which developers are incorporating proprietary and domain-specific data when building applications of Large Language Models (LLMs): Retrieval-Augmented Generation (RAG) and Fine-Tuning. RAG augments the prompt with the external&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/2401.08406&quot; data-og-url=&quot;https://arxiv.org/abs/2401.08406v2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DLpQq/hyVb0we23p/aumgzx9KqU4lC7DY1jw3k1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/9aEzy/hyVb9UfNMQ/7sSxQk4poXm15PLNEkkzJ0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/2401.08406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/2401.08406&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DLpQq/hyVb0we23p/aumgzx9KqU4lC7DY1jw3k1/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/9aEzy/hyVb9UfNMQ/7sSxQk4poXm15PLNEkkzJ0/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;RAG vs Fine-tuning: Pipelines, Tradeoffs, and a Case Study on Agriculture&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;There are two common ways in which developers are incorporating proprietary and domain-specific data when building applications of Large Language Models (LLMs): Retrieval-Augmented Generation (RAG) and Fine-Tuning. RAG augments the prompt with the external&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 포스트는 매우 간략히 연구를 통한 인사이트를 비교하는 데 목적을 두고있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세히 알고싶으신 분은 꼭 원문을 참조해주세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;349&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvdWsP/btsD3bWSIi1/kweWIbeTQAEKy7mGKBWkL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvdWsP/btsD3bWSIi1/kweWIbeTQAEKy7mGKBWkL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvdWsP/btsD3bWSIi1/kweWIbeTQAEKy7mGKBWkL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvdWsP%2FbtsD3bWSIi1%2FkweWIbeTQAEKy7mGKBWkL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;405&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;349&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Abstract에서 알 수 있다시피 해당 논문은 LLM 발전과 함께 application 수준에서의 활용 중, RAG(Retreival-Augmented Generation)과 Fine-Tuning에 대한 비교를 다루고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;RAG&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 데이터로 Prompt 보강&lt;/li&gt;
&lt;li&gt;추가 데이터 Vectorization(외부 데이터베이스) 및 참조&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Fine-Tuning&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추가 지식을 학습함으로서 모델에 직접 통합&lt;/li&gt;
&lt;li&gt;특정 데이터셋에 맞춰 모델 Tuning&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 그림은 LLM이 Specific Domain Knowledge가 필요함을 직접적으로 보여주며 논문을 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NVmZ2/btsD3GCfwWa/bZT7ea277BH59Nka4pQmn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NVmZ2/btsD3GCfwWa/bZT7ea277BH59Nka4pQmn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NVmZ2/btsD3GCfwWa/bZT7ea277BH59Nka4pQmn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNVmZ2%2FbtsD3GCfwWa%2FbZT7ea277BH59Nka4pQmn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;713&quot; height=&quot;800&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Methodology&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEjkhE/btsD27f5zTV/ZTnyJaXskRJ5g8hUXfKfYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEjkhE/btsD27f5zTV/ZTnyJaXskRJ5g8hUXfKfYk/img.png&quot; data-alt=&quot;Brief methodology Pipeline&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEjkhE/btsD27f5zTV/ZTnyJaXskRJ5g8hUXfKfYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEjkhE%2FbtsD27f5zTV%2FZTnyJaXskRJ5g8hUXfKfYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;263&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Brief methodology Pipeline&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Fine-Tuning&lt;/li&gt;
&lt;li&gt;RAG&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;PDF information extraction&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8u0n7/btsD4U7Hzid/sCxHPiFRCaGzOSq6fFBKEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8u0n7/btsD4U7Hzid/sCxHPiFRCaGzOSq6fFBKEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8u0n7/btsD4U7Hzid/sCxHPiFRCaGzOSq6fFBKEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8u0n7%2FbtsD4U7Hzid%2FsCxHPiFRCaGzOSq6fFBKEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;735&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAcT2u/btsD4rLrMw8/oESLt1q78vegk2hkT39X61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAcT2u/btsD4rLrMw8/oESLt1q78vegk2hkT39X61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAcT2u/btsD4rLrMw8/oESLt1q78vegk2hkT39X61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAcT2u%2FbtsD4rLrMw8%2FoESLt1q78vegk2hkT39X61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;569&quot; height=&quot;404&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pdf2text (Python Library)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Results&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;691&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yyLc6/btsD2uWPTjD/yfvG1GhDJ00C37chIVfbN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yyLc6/btsD2uWPTjD/yfvG1GhDJ00C37chIVfbN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yyLc6/btsD2uWPTjD/yfvG1GhDJ00C37chIVfbN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyyLc6%2FbtsD2uWPTjD%2FyfvG1GhDJ00C37chIVfbN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;832&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;691&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cP9V5o/btsD3bQesgU/rRNL5AdEnhk4KOG6H7kYa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cP9V5o/btsD3bQesgU/rRNL5AdEnhk4KOG6H7kYa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cP9V5o/btsD3bQesgU/rRNL5AdEnhk4KOG6H7kYa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcP9V5o%2FbtsD3bQesgU%2FrRNL5AdEnhk4KOG6H7kYa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;532&quot; height=&quot;329&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전반적인 인사이트를 정리하자면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cost &amp;ndash; Input Token Size:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RAG:&amp;nbsp;프롬프트&amp;nbsp;크기가&amp;nbsp;증가하며,&amp;nbsp;비용이&amp;nbsp;더&amp;nbsp;듭니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Fine-tuning:&amp;nbsp;최소한의&amp;nbsp;비용이&amp;nbsp;듭니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cost &amp;ndash; Output Token Size:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RAG:&amp;nbsp;출력이&amp;nbsp;더&amp;nbsp;장황하고&amp;nbsp;제어가&amp;nbsp;어렵습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Fine-tuning:&amp;nbsp;간결하고,&amp;nbsp;간단함에&amp;nbsp;맞게&amp;nbsp;조정됩니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Initial Cost:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RAG:&amp;nbsp;임베딩&amp;nbsp;생성&amp;nbsp;비용이&amp;nbsp;낮습니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Fine-tuning:&amp;nbsp;파인&amp;nbsp;튜닝&amp;nbsp;과정이&amp;nbsp;높은&amp;nbsp;초기&amp;nbsp;비용을&amp;nbsp;필요로&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Accuracy:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;두&amp;nbsp;모델&amp;nbsp;모두&amp;nbsp;효과적입니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New Knowledge:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;RAG:&amp;nbsp;데이터가&amp;nbsp;맥락에&amp;nbsp;있을&amp;nbsp;때&amp;nbsp;새로운&amp;nbsp;지식을&amp;nbsp;제공합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Fine-tuning:&amp;nbsp;특정&amp;nbsp;도메인에서&amp;nbsp;새로운&amp;nbsp;기술을&amp;nbsp;추가합니다.&lt;/p&gt;</description>
      <category>MACHINE LEARNING</category>
      <category>Finetuning</category>
      <category>GPT</category>
      <category>LLM</category>
      <category>Rag</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/54</guid>
      <comments>https://24bean.tistory.com/entry/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-RAG-VS-FINE-TUNING-PIPELINES-TRADEOFFS-AND-A-CASESTUDY-ON-AGRICULTURE#entry54comment</comments>
      <pubDate>Sun, 28 Jan 2024 15:44:03 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI Assistant API 활용 예제 (Python Code) / ChatGPT</title>
      <link>https://24bean.tistory.com/entry/OpenAI-Assistant-API-%ED%99%9C%EC%9A%A9-%EC%98%88%EC%A0%9C-Python-Code-ChatGPT</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난 11월 06일 OpenAI는 DevDay를 통해 새로운 Assistant API를 공개하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Assistant는&lt;b&gt; &quot;Code&amp;nbsp;Interpreter,&amp;nbsp;Retrieval,&amp;nbsp;Function&amp;nbsp;calling&quot;&lt;/b&gt; 과&amp;nbsp;같은&amp;nbsp;다양한&amp;nbsp;도구를&amp;nbsp;활용할&amp;nbsp;수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재&amp;nbsp;베타&amp;nbsp;버전으로,&amp;nbsp;특정&amp;nbsp;Instruction과 model selection을&amp;nbsp;통해&amp;nbsp;사용자&amp;nbsp;정의&amp;nbsp;assistant를&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Assistant를 활용하는 것은 다음과 같은 절차에 의해 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;1. 어시스턴트&amp;nbsp;생성&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;어시스턴트에&amp;nbsp;대한&amp;nbsp;사용자&amp;nbsp;정의&amp;nbsp;지침&amp;nbsp;정의.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;모델&amp;nbsp;선택&amp;nbsp;및&amp;nbsp;Code&amp;nbsp;Interpreter,&amp;nbsp;Retrieval,&amp;nbsp;Function&amp;nbsp;calling과&amp;nbsp;같은&amp;nbsp;도구&amp;nbsp;활성화&amp;nbsp;여부&amp;nbsp;선택.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 대화&amp;nbsp;플로우&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;사용자가&amp;nbsp;대화를&amp;nbsp;시작하면&amp;nbsp;Thread&amp;nbsp;생성.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;사용자의&amp;nbsp;질문에&amp;nbsp;따라&amp;nbsp;Thread에&amp;nbsp;Messages&amp;nbsp;추가.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 어시스턴트&amp;nbsp;실행&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Thread에서&amp;nbsp;어시스턴트를&amp;nbsp;실행하여&amp;nbsp;응답&amp;nbsp;트리거.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;API는&amp;nbsp;어시스턴트&amp;nbsp;구성에&amp;nbsp;따라&amp;nbsp;자동으로&amp;nbsp;관련&amp;nbsp;도구를&amp;nbsp;호출.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드와 함께 조금 자세히 활용법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://devday.openai.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://devday.openai.com&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699772827196&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenAI DevDay&quot; data-og-description=&quot;New models and developer products announced at DevDay GPT-4 Turbo with 128K context and lower prices, the new Assistants API, GPT-4 with Vision, DALL&amp;middot;E 3 API, and more.&quot; data-og-host=&quot;devday.openai.com&quot; data-og-source-url=&quot;https://devday.openai.com&quot; data-og-url=&quot;https://devday.openai.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/El8vr/hyUuRUCnIJ/KaHlGFN0VlbP1vtnEattM0/img.png?width=2160&amp;amp;height=2160&amp;amp;face=0_0_2160_2160,https://scrap.kakaocdn.net/dn/o84TE/hyUu4GpLOk/Q9yS0eM3cu2vaQVtaWhw0k/img.png?width=2160&amp;amp;height=2160&amp;amp;face=0_0_2160_2160,https://scrap.kakaocdn.net/dn/chniBC/hyUu4GpLzm/jt9DGcgOkDVLARw9IG7Kn0/img.jpg?width=3200&amp;amp;height=3200&amp;amp;face=0_0_3200_3200&quot;&gt;&lt;a href=&quot;https://devday.openai.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://devday.openai.com&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/El8vr/hyUuRUCnIJ/KaHlGFN0VlbP1vtnEattM0/img.png?width=2160&amp;amp;height=2160&amp;amp;face=0_0_2160_2160,https://scrap.kakaocdn.net/dn/o84TE/hyUu4GpLOk/Q9yS0eM3cu2vaQVtaWhw0k/img.png?width=2160&amp;amp;height=2160&amp;amp;face=0_0_2160_2160,https://scrap.kakaocdn.net/dn/chniBC/hyUu4GpLzm/jt9DGcgOkDVLARw9IG7Kn0/img.jpg?width=3200&amp;amp;height=3200&amp;amp;face=0_0_3200_3200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI DevDay&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;New models and developer products announced at DevDay GPT-4 Turbo with 128K context and lower prices, the new Assistants API, GPT-4 with Vision, DALL&amp;middot;E 3 API, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;devday.openai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;0. 전체 구성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI가 제안하는 전체 프로세스를 정리해보면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* Object&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djqhdh/btsAcTdEmzh/X9KxgzK08cSz8tLT6S0sU1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djqhdh/btsAcTdEmzh/X9KxgzK08cSz8tLT6S0sU1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djqhdh/btsAcTdEmzh/X9KxgzK08cSz8tLT6S0sU1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjqhdh%2FbtsAcTdEmzh%2FX9KxgzK08cSz8tLT6S0sU1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;217&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* Run life-cycle&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckeMEq/btsAa9AWCuc/LlIHrivE6wbJETvlS96S1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckeMEq/btsAa9AWCuc/LlIHrivE6wbJETvlS96S1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckeMEq/btsAa9AWCuc/LlIHrivE6wbJETvlS96S1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckeMEq%2FbtsAa9AWCuc%2FLlIHrivE6wbJETvlS96S1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;217&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* Run Step&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPUDjr/btsz84A1n4V/qyfdkiZHf2iD4KnEbQiDR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPUDjr/btsz84A1n4V/qyfdkiZHf2iD4KnEbQiDR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPUDjr/btsz84A1n4V/qyfdkiZHf2iD4KnEbQiDR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPUDjr%2Fbtsz84A1n4V%2FqyfdkiZHf2iD4KnEbQiDR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;217&quot; data-origin-width=&quot;1360&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 어시스턴트(Assistant) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 OpenAI의 API를 활용하는 것과 같이 우선 API KEY를 환경 변수에 추가해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;* client 선언&lt;/p&gt;
&lt;pre id=&quot;code_1699773249916&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;client = OpenAI(api_key=&quot;YOUR_API_KEY&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Assistant를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 코드 예시는 제가 작성한 임의의 예시입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 생각하면, 모델에게 자아(?)를 부여하는 것입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너의 이름은 &quot;CSV interpreter&quot;야,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 너가 다음과 같이 행동하길 바래, &quot;You are a CSV ~~~&quot;,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너가 활용할 Tool은 &quot;code_interpreter&quot;야,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 &quot;gpt-4-1106-preview&quot;를 사용하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;file에 대한 정보는 &quot;[file.id]&quot;야&lt;/p&gt;
&lt;pre id=&quot;code_1699773355879&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_assistant = client.beta.assistants.create(
        name=&quot;CSV interpreter&quot;,
        instructions=f&quot;You are a CSV interpreter.\
            \nI want you to give me a recommendation for visualization of the data.&quot;,
        tools=[{&quot;type&quot;: &quot;code_interpreter&quot;}], # type: code_interpreter, retrieval, function
        model=&quot;gpt-4-1106-preview&quot;,
        file_ids=[file.id]
    )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;file에 대한 입출력 또한 위와 같이 관리할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 retrieval은 파일의 지속적인 접근을 다루는 내용이며 code interpreter와의 자세한 비교는 아래 표를 참조바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;1232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chpL30/btsz90SnIiv/4vj36wwFslBvipreo9SAF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chpL30/btsz90SnIiv/4vj36wwFslBvipreo9SAF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chpL30/btsz90SnIiv/4vj36wwFslBvipreo9SAF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchpL30%2Fbtsz90SnIiv%2F4vj36wwFslBvipreo9SAF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;512&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;1232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 참조:&amp;nbsp;&lt;a href=&quot;https://platform.openai.com/docs/assistants/tools/supported-files&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/docs/assistants/tools/supported-files&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699773562940&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenAI Platform&quot; data-og-description=&quot;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&quot; data-og-host=&quot;platform.openai.com&quot; data-og-source-url=&quot;https://platform.openai.com/docs/assistants/tools/supported-files&quot; data-og-url=&quot;https://platform.openai.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cd0NzZ/hyUuUqgOrr/AiKUc3vnHkEQFheQ5mPpW0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cASgj6/hyUu3HvqeO/dgi5JruMn1hhKp2dehCgAk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/assistants/tools/supported-files&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://platform.openai.com/docs/assistants/tools/supported-files&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cd0NzZ/hyUuUqgOrr/AiKUc3vnHkEQFheQ5mPpW0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cASgj6/hyUu3HvqeO/dgi5JruMn1hhKp2dehCgAk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Platform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;platform.openai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 쓰레드(Thread) 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화를 위한 쓰레드를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1699773699822&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_thread = client.beta.threads.create()
    message = client.beta.threads.messages.create(
        thread_id=new_thread.id,
        role=&quot;user&quot;,
        content=&quot;I need to visualize the data. Can you recommend me 4 plots that describe the data as much as possible?&quot;,
        )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 어시스턴트(Assistant) 실행&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가한 쓰레드에 대한 답변을 정의한 어시스턴트에게 요청합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1699773776833&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id,
        # instructions=&quot;I want you to elaborate why you recommend these plots.&quot;, &amp;lt;- duplicate instructions
    )
while(run.status != &quot;completed&quot;):
    run = client.beta.threads.runs.retrieve(
        thread_id=thread.id,
        run_id=run.id
    )

    print(&quot;run.status: &quot;, run.status)
    if run.status == &quot;failed&quot;:
        raise Exception(&quot;The run failed with the message: &quot; + run.error)

messages = client.beta.threads.messages.list(
    thread_id=thread.id,
)
return messages&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 이때 beta 버전의 API 답게 불편함이 꽤나 많습니다. 특히, While 문을 통해 지속적인 요청을 보내야한다는 점이 그 단점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 이슈에 대한 OpenAI 또한 문제를 인식하고 있는 듯 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 아래는 OpenAI의 답변 중 일부를 발췌했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS0dWr/btsAaQ2GtCS/S3R3jmfBHX0OkFwe3UmvKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS0dWr/btsAaQ2GtCS/S3R3jmfBHX0OkFwe3UmvKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS0dWr/btsAaQ2GtCS/S3R3jmfBHX0OkFwe3UmvKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS0dWr%2FbtsAaQ2GtCS%2FS3R3jmfBHX0OkFwe3UmvKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;216&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;ETC&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 매번 코드를 작성하고 내가 원하는 작업이 정상적으로 동작하는 지 여부를 판단하는 것은 생각보다 직관적이지 못한 경우도 있고, 더욱 쉬운 방법이 있다면 굳이 해보지 않을 이유는 없죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직관적으로 내가 원하는 작업과 모델의 이용가능성을 Playground에서 확인해보시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Playground 활용 예시&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W7U7V/btsAalBZCYy/6SJH5cEEUDlSimIoKK50Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W7U7V/btsAalBZCYy/6SJH5cEEUDlSimIoKK50Uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W7U7V/btsAalBZCYy/6SJH5cEEUDlSimIoKK50Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW7U7V%2FbtsAalBZCYy%2F6SJH5cEEUDlSimIoKK50Uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;351&quot; data-origin-width=&quot;3018&quot; data-origin-height=&quot;1628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/playground?assistant=asst_uU2p7HUg96AC8NxjFhX4dR7X&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/playground?assistant=asst_uU2p7HUg96AC8NxjFhX4dR7X&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699774192268&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenAI Platform&quot; data-og-description=&quot;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&quot; data-og-host=&quot;platform.openai.com&quot; data-og-source-url=&quot;https://platform.openai.com/playground?assistant=asst_uU2p7HUg96AC8NxjFhX4dR7X&quot; data-og-url=&quot;https://platform.openai.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cLnyPN/hyUuZkOPs5/SuF3d77GrTZZxsZLNNgoK0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/Vayee/hyUuXgergx/7KuyhYyYb1LAkOxk5oRNA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://platform.openai.com/playground?assistant=asst_uU2p7HUg96AC8NxjFhX4dR7X&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://platform.openai.com/playground?assistant=asst_uU2p7HUg96AC8NxjFhX4dR7X&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cLnyPN/hyUuZkOPs5/SuF3d77GrTZZxsZLNNgoK0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/Vayee/hyUuXgergx/7KuyhYyYb1LAkOxk5oRNA0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Platform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;platform.openai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 자세한 활용 방안은 아래에 링크를 참조해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/assistants/overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/docs/assistants/overview&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1699773096200&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;OpenAI Platform&quot; data-og-description=&quot;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&quot; data-og-host=&quot;platform.openai.com&quot; data-og-source-url=&quot;https://platform.openai.com/docs/assistants/overview&quot; data-og-url=&quot;https://platform.openai.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dMgTui/hyUu3AJTJe/P3khCuQbURkG4IhzD6IaB1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/G0hiI/hyUuSeUpii/dgveJUXbdpkkzkOSCbsyV1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/assistants/overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://platform.openai.com/docs/assistants/overview&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dMgTui/hyUu3AJTJe/P3khCuQbURkG4IhzD6IaB1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/G0hiI/hyUuSeUpii/dgveJUXbdpkkzkOSCbsyV1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Platform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;platform.openai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MACHINE LEARNING</category>
      <category>API</category>
      <category>assistant</category>
      <category>Chatbot</category>
      <category>LLM</category>
      <category>OpenAI</category>
      <category>Playground</category>
      <category>어시스턴트</category>
      <category>예제</category>
      <author>24_bean</author>
      <guid isPermaLink="true">https://24bean.tistory.com/53</guid>
      <comments>https://24bean.tistory.com/entry/OpenAI-Assistant-API-%ED%99%9C%EC%9A%A9-%EC%98%88%EC%A0%9C-Python-Code-ChatGPT#entry53comment</comments>
      <pubDate>Sun, 12 Nov 2023 16:31:27 +0900</pubDate>
    </item>
  </channel>
</rss>