25 5월 2025

[chatgpt] [ChatGPT] Function calling

 

 

Function Calling이란?

Chatgpt Chat Completions API를 사용하면, 질문을 하고 답변을 얻을 수 있다.
Function Calling을 사용하면, 질문에 적합한 애플리케이션 함수와 매개변수를 추천받을 수 있다. 

즉, 애플리케이션에서 어떤 함수를 호출하는게 좋을지 gpt에게 물어볼 수 있는 기능이라고 볼 수 있다.

예제코드

open ai에서 가져온 파이썬 예제 코드이다. 한줄한줄 읽어보면, 어떤 방식으로 사용하는 건지 쉽게 감이 온다. 

import openai
import json


# 항상 같은 날씨를 리턴하는 예시용 더미 함수이다. 
# 실제 개발환경에서는 상황에 맞는 코드를 구현해야한다.
def get_current_weather(location, unit="fahrenheit"):
    """Get the current weather in a given location"""
    weather_info = {
        "location": location,
        "temperature": "72",
        "unit": unit,
        "forecast": ["sunny", "windy"],
    }
    return json.dumps(weather_info)


def run_conversation():
    # Step 1: chatgpt에게 질문과 이용할 수 있는 함수 목록을 전달한다. 
    messages = [{"role": "사용자", "content": "서울 날씨는 어때? "}]
    functions = [
        {
            "name": "get_current_weather",
            "description": "위치를 전달하면, 현재 날씨를 알려준다",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "구군시  전달한다. ex. 서울특별시",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        }
    ]
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0613",
        messages=messages,
        functions=functions, # 이 곳에서 함수 정보를 전달한다.
        function_call="auto",  
    )
    response_message = response["choices"][0]["message"]

    # Step 2: GPT에서 함수 호출을 하라고 했는지 확인하기 
    if response_message.get("function_call"):
        # Step 3: GPT에서 호출하라고 한 함수를 실제로 호출하기 
        available_functions = {
            "get_current_weather": get_current_weather,
        }  # 이 예제에서는 호출할 수 있는 함수를 1개만 두었지만, 실제로는 여러개를 추가할 수 있다. 
        function_name = response_message["function_call"]["name"] // GPT가 제안한 함수 이름 확인하기 
        fuction_to_call = available_functions[function_name] // GPT가 제안한 함수 할당하기  
        function_args = json.loads(response_message["function_call"]["arguments"])
        function_response = fuction_to_call(
            location=function_args.get("location"),
            unit=function_args.get("unit"),
        ) # GPT가 제안한 함수를 GPT에서 찾은 매개변수로 전달하기 

        # Step 4: 함수 호출로 얻은 결과를 gpt에게 다시 보내주기 send the info on the function call and function response to GPT
        messages.append(response_message)  # API으로 호출받은 값을 확장하기 
        messages.append(
            {
                "role": "function",
                "name": function_name,
                "content": function_response,
            }
        ) 
        second_response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-0613",
            messages=messages,
        )  # gpt에게 응답 결과 다시 전달하기 
        return second_response


print(run_conversation())

참고

https://platform.openai.com/docs/guides/gpt/function-calling
https://github.com/joshlong/chatgpt-spring-boot-starter
https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb

출처: https://americanopeople.tistory.com/427 [복세편살:티스토리]

Loading

23 4월 2025

[인공지능 기술] 개발자가 맞닥뜨린 갈림길…‘바이브 코딩’을 배우거나, 은퇴하거나

[인공지능 기술] 개발자가 맞닥뜨린 갈림길…‘바이브 코딩’을 배우거나, 은퇴하거나

‘바이브 코딩’은 앞으로 개발자가 코드를 짜는 방식이 될 것이다. 지금 배우지 않으면 개발자로서 커리어는 끝난다.

01 3967678-0-70166200-1745395027-shutterstock_1724042191.pngCredit: Photoongraphy / Shutterstock

 

제목을 보고 분노하기를 바란다. 화내라. 책상을 쾅 내려치고 고개를 절레절레 흔들어라. 그리고 진지하게 받아들여라. 바이브 코딩(Vibe Coding)을 배워야 한다. 그렇지 않으면 소프트웨어 개발자 커리어는 끝난다.

바이브 코딩은 최신 세대의 코드 생성 툴, 즉 LLM(흔히 말하는 챗GPT)을 활용하는 방식을 귀엽게 부르는 말이다. 커서(Cursor), 코드라인(Codeline), 탭나인(Tabnine) 같은 수많은 툴이 있는데, 솔직히 말해 전부 별로다. 이제 여기에 이 분야의 원조 격인 깃허브 코파일럿(GitHub Copilot)까지 본격적으로 가세하고 있다. 대부분은 비주얼 스튜디오 코드(Visual Studio Code)의 파생 버전이거나 플러그인 형태다.

게임 개발 경험이 전혀 없는 사람이 GPT로 게임 하나를 뚝딱 만들어서 대통령이 트위터에 올리고, 그걸로 백만장자가 되는 일이 가능하다는 말은 아니다. (사실 그보다 더 황당한 일이 실제로 벌어지기는 했다.) 생성형 AI 코딩 툴이 훌륭하다는 얘기를 하려는 것도 아니다. 오히려 더 엉망이고, 보안 취약점이 더 많은 코드를 낼 가능성이 크다. 여기서 말하려는 건 단 하나다. 이런 툴을 배우지 않으면, 곧 업계에서 은퇴할 준비를 해야 할 거라는 점이다.

어디서 들어본 이야기

뻔한 이야기다. 이런 일은 예전에도 있었다. 커리어 초장기에 필자는 한 개발자를 만났다. 편의상 톰이라고 부른다. 톰은 전형적인 구세대 개발자였다. 키보드를 눈으로 보며 타자 치는 식의 ‘독수리 타법’으로 프로그래밍을 하던 사람이었다. 톰은 비주얼 베이직(Visual Basic)으로 보고서 하나 만드는 데 6개월이 걸렸다. 예전에는 어떤 언어를 썼는지는 모르겠지만, VB는 책을 통해 독학했다고 했다. 톰이 휴가를 간 동안, 원래는 둘이 함께하기로 했던 보고서를 10일 정도 만에 끝냈다. 일부러 톰이 할 부분은 남겨뒀는데, 그때부터 톰은 나를 싫어했다.

어떻게 그렇게 빨리 해냈느냐고? IDE를 활용했고 인터넷 검색을 했다(이때는 ‘구글링하다’라는 말이 없던 시기였다). 우리가 자바로 전환했을 때 필자는 인터넷에서 자바를 일주일 만에 익혔고 동시에 J빌더(JBuilder) 사용법도 배웠다. 반면 톰은 브루스 에켈의 『씽킹 인 자바(Thinking in Java)』 책을 사서 여전히 독수리 타법으로 쿵쾅대며 타이핑하고 마치 성경이라도 되는 듯 그 책에 의존했다. 톰은 새로운 방식으로 배우고자 하지 않았다. 세상이 바뀌는 걸 비난하면서 낡은 방식에 머무르고 싶어 했을 뿐이었다.

현재 링크드인에는 두 부류의 사람이 있다. 1년 전까지만 해도 웹3를 외치던 사람이 지금은 바이브 코딩에 대해 과장된 주장을 늘어놓는다. 그리고 또 한 부류는 ‘톰들’이다. 보안이 어쩌니, 코딩은 예술이니 하면서 온갖 불평을 늘어놓는 사람들이다. 만약 당신이 톰이라면, 이제 퇴직 알람을 맞춰야 할 때다. 새로운 방식으로 일하는 법을 배우는 것은 개발자라는 직업의 일부다.

비즈니스 소프트웨어를 만드는 개발자는 예술가도 아니고 코드 시인도 아니다. “소프트웨어 장인 정신” 같은 건 아무도 신경 쓰지 않는다. 상사의 말이 맞다. 새로운 방식을 배우고 더 빠르게 코딩해야 한다. 그게 아니면, 키보드 좀 잘 두드릴 줄 알고 구글 검색 하나 잘하는 20대를 만난 뒤 결국 은퇴를 택했던 톰이 된다. 그게 전부다. 바이브 코딩을 하든가, 은퇴하든가.

LLM이 정말 그렇게 대단하냐고? 그렇다. 완전한 애플리케이션을 생성할 수 있냐고? 그렇다. 결과물이 형편없을 거냐고? 그건 사용자의 실력에 달렸다. LLM은 만병통치약이 아니다. “코딩 없이도 할 수 있다”라는 새로운 세대의 구호는 사실 이전 세대의 “코딩 없이도 할 수 있다”라는 말과 전혀 다르지 않다. 단순한 것만 하려면 정말 코딩 없이도 되기는 한다. 하지만 버전 2.0이 필요하거나 복잡한 뭔가를 만들려면 결국 코딩이 필요하다. 예전과 똑같다. 달라진 건 단 하나, 코딩 툴의 속도와 품질이 더 좋아졌다는 점뿐이다.

 

시간이 필요하다

바이브 코딩 툴을 처음 써서 만든 애플리케이션은 형편없을 것이다. 툴이 무척 답답할 것이고 스스로 잘 활용하지 못한다고 느낄 것이다. 하지만 그건 도구 탓이 아니라 사용자 탓이다. 이런 툴은 아직 성숙도나 안정성 면에서 J빌더, (아마 이 정도까진 아니겠지만) 비주얼 베이직 4.2, 자바스크립트 1.0 수준이다. 사용하다 보면 이상한 동작을 해서 짜증이 나고 당장이라도 때려치우고 싶어질 수도 있다. 하지만 점점 적응하고 이런 툴과 함께 일하는 방법을 익히면 점점 속도가 붙기 시작한다.

코딩을 조금이라도 할 줄 아는 사람이라면 이런 툴은 처음 구조를 잡는 단계 이후부터는 오히려 속도를 늦출 수 있다. 툴이 내리는 이상한 결정에 고개를 절레절레 젓게 되겠지만, 결국에는 이 툴을 원하는 대로 사용하는 방법을 배우게 된다. 지금까지 새로운 개발 툴이나 기술을 배울 때 항상 그랬던 것처럼 말이다.

일단 요령이 생기면 새로운 역량을 얻게 된다. 필자 역시 코딩은 할 줄 알지만, 자바스크립트를 제대로 배워야겠다고 생각한 적은 별로 없었다. 그런데도 최근에 제법 복잡하고 방대한 자바스크립트 애플리케이션을 3주도 안 돼서 완성했다. 물론 생성형 AI 없이도 언젠가는 다 했을 일이다. 하지만 필요한 API를 일일이 검색하고 확장 포인트를 익히는 데는 시간이 꽤 걸렸을 것이다. 심지어 지금보다 훨씬 괜찮았던 시절의 구글링을 한다 해도 말이다. 필자가 바이브 코딩으로 완성한 결과물은 예전 같으면 석 달은 걸렸을 작업이었다. AI 덕분에 생산성이 10배 증가한 건 아니지만, 평소보다 작업 속도가 5배는 빨라졌다.

다가올 바이브 코딩 시대, 살아남고 싶다면 지금부터 준비해야 한다. 다음은 실전에 바로 쓸 수 있는 몇 가지 팁이다.

  • 우선 커서, 코드라인 같은 툴의 무료 버전부터 시작하라. 뭐든 상관없다. 그리고 곧바로 최소 40달러는 지불하라. 코드가 그려지는 걸 멍하니 보고만 있어선 실력이 늘지 않는다.
  • “시간만 있었으면 만들었을” 프로젝트를 골라라. 예를 들어, 줌 녹화 저장 문제를 스스로 해결했던 어떤 사람처럼 말이다.
  • 깃(Git)을 자주 사용하라. AI 코딩 툴은 종종 어이없는 짓을 종종 저지른다. 복구하려면 버전 관리에 익숙해야 한다.
  • 본격적으로 코딩을 시작하기 전에 LLM과 설계 대화를 나눠라. 결과를 마크다운 형식으로 받아두면 좋다. 대부분의 바이브 코딩 IDE는 이 마크다운을 지침 설정에 넣을 수 있다. 모델에게 같은 설명을 반복하지 않아도 된다. 혹시 까먹으면 다시 넣어주면 된다.
  • 매 단계마다 결과를 검토하고 모델이 엉뚱한 짓을 하면 과감히 되돌려라.
  • 답답해도 버텨라. 써먹을 줄 알게 되면 이런 툴은 무기가 된다.
  • 지금 시점에서는 클로드 3.7 소넷(Claude 3.7 Sonnet)이나 제미나이 2.5 프로(Gemini 2.5 Pro) 혹은 실험 버전(Gemini 2.5 Experimental)이 가장 쓸 만하다.

바이브 코딩은 곧 현실이 된다. 개발자는 앞으로 이렇게 코딩할 것이다. 지금 배우기 시작하라. 아니면 은퇴 준비를 하라.
dl-itworldkorea@foundryco.com

[출처] https://www.itworld.co.kr/article/3967678/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%A7%9E%EB%8B%A5%EB%9C%A8%EB%A6%B0-%EA%B0%88%EB%A6%BC%EA%B8%B8%EB%B0%94%EC%9D%B4%EB%B8%8C-%EC%BD%94%EB%94%A9%EC%9D%84-%EB%B0%B0.html

Loading

22 4월 2025

[Ollama 응용개발] 로컬 환경에서 API 호스팅을 위한 Ollama 설정 종합 가이드 

[Ollama 응용개발] 로컬 환경에서 API 호스팅을 위한 Ollama 설정 종합 가이드 

2025-04-22-01 블로그 포스팅 ad1fa514-dd01-40f5-9717-90164a969d40.png

 

1. Ollama 소개

Ollama는 자체 하드웨어에서 대규모 언어 모델(LLM)을 로컬로 실행할 수 있게 해주는 오픈소스 프레임워크입니다. Llama 3, DeepSeek-R1, Phi-4, Gemma 2 등의 모델을 복잡한 인프라 설정 없이 다운로드, 설정 및 상호작용할 수 있는 과정을 단순화합니다.

Ollama의 주요 기능:

  • 로컬 머신에서 완전히 오프라인으로 LLM 실행
  • 간단한 명령줄 인터페이스
  • 애플리케이션과의 통합을 위한 RESTful API
  • CPU 및 GPU 가속 지원
  • 모델 관리(다운로드, 실행, 생성, 삭제)

2. 시스템 요구 사항

Ollama를 설치하기 전에 시스템이 다음 최소 요구 사항을 충족하는지 확인하세요:

최소 요구 사항:

  • 운영 체제: macOS, Linux 또는 Windows
  • RAM: 최소 8GB(대형 모델의 경우 16GB+ 권장)
  • 디스크 공간: Ollama 및 기본 모델용 12GB+(추가 모델을 위한 더 많은 공간)
  • CPU: 다중 코어 프로세서(합리적인 성능을 위해)

더 나은 성능을 위한 권장 사항:

  • RAM: 16GB+
  • GPU: CUDA를 지원하는 NVIDIA GPU 또는 Apple Silicon
  • 디스크 공간: 50GB+ SSD 저장 공간

3. 설치 방법

macOS 설치

  1. 공식 웹사이트에서 설치 프로그램을 다운로드하거나 Homebrew를 사용하세요:

    공식 설치 프로그램 사용:

    curl -fsSL https://ollama.com/install.sh | sh

    Homebrew 사용:

    brew install ollama
  2. Ollama 시작:
    ollama serve

Linux 설치

  1. 설치 스크립트를 사용하여 설치:
    curl -fsSL https://ollama.com/install.sh | sh
  2. 수동 설치나 특정 Linux 배포판의 경우 공식 문서를 확인하세요.
  3. Ollama 서비스 시작:
    ollama serve

Windows 설치

  1. 공식 웹사이트에서 설치 프로그램 다운로드: https://ollama.com/download
  2. 설치 프로그램을 실행하고 설치 마법사를 따르세요.
  3. 설치 후, 시작 메뉴에서 Ollama를 실행하거나 다음을 실행하세요:
    ollama serve

4. 기본 사용법

Ollama가 설치되면 기본 명령어로 사용을 시작할 수 있습니다:

모델 다운로드(Pull)

ollama pull llama3.2

이것은 Llama 3.2 모델을 로컬 머신에 다운로드합니다. llama3.2를 사용 가능한 다른 모델로 대체할 수 있습니다.

사용 가능한 모델 목록 보기

ollama list

대화형 모드에서 모델 실행

ollama run llama3.2

이렇게 하면 모델과 채팅할 수 있는 대화형 세션이 시작됩니다.

5. API 서버 설정 및 구성

Ollama는 ollama serve를 실행하면 자동으로 포트 11434에서 API 서버를 시작합니다. 기본적으로 localhost(127.0.0.1)에 바인딩되어 로컬 머신에서만 접근할 수 있습니다.

API 서버 구성

환경 변수를 사용하여 API 서버를 구성할 수 있습니다:

  1. 다른 머신에서 액세스할 수 있도록 바인딩 주소 변경:
    OLLAMA_HOST=0.0.0.0 ollama serve

    이렇게 하면 Ollama가 모든 네트워크 인터페이스에 바인딩되어 네트워크의 다른 머신에서 접근할 수 있습니다.

  2. 포트 변경:
    OLLAMA_HOST=127.0.0.1:8000 ollama serve

    이렇게 하면 Ollama가 기본 11434 대신 포트 8000에서 실행됩니다.

  3. 시스템 서비스로 설정(Linux):

    systemd 서비스 파일 생성:

    sudo nano /etc/systemd/system/ollama.service

    다음 내용 추가:

    [Unit]
    Description=Ollama Service
    After=network.target
    
    [Service]
    Type=simple
    User=YOUR_USERNAME
    Environment="OLLAMA_HOST=0.0.0.0"
    ExecStart=/usr/local/bin/ollama serve
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target

    서비스 활성화 및 시작:

    sudo systemctl enable ollama
    sudo systemctl start ollama

6. API 사용 예제

API 서버가 실행 중이면 다양한 방법으로 상호작용할 수 있습니다:

curl 사용

  1. 응답 생성:
    curl -X POST http://localhost:11434/api/generate -d '{
      "model": "llama3.2",
      "prompt": "기계 학습이란 무엇인가요?",
      "stream": false
    }'
  2. 채팅 API(대화형 모델용):
    curl -X POST http://localhost:11434/api/chat -d '{
      "model": "llama3.2",
      "messages": [
        {
          "role": "user",
          "content": "기계 학습이란 무엇인가요?"
        }
      ],
      "stream": false
    }'
  3. 사용 가능한 모델 나열:
    curl http://localhost:11434/api/tags
  4. 모델 다운로드:
    curl -X POST http://localhost:11434/api/pull -d '{
      "name": "phi3:mini"
    }'

Python 사용

  1. 공식 Python 라이브러리 설치:
    pip install ollama
  2. 기본 사용법:
    import ollama
    
    # 응답 생성
    response = ollama.generate(
        model='llama3.2',
        prompt='기계 학습이란 무엇인가요?'
    )
    print(response['response'])
  3. 채팅 API:
    import ollama
    
    response = ollama.chat(
        model='llama3.2',
        messages=[
            {
                'role': 'user',
                'content': '기계 학습이란 무엇인가요?'
            }
        ]
    )
    print(response['message']['content'])
  4. 스트리밍 응답:
    import ollama
    
    # 응답 스트리밍
    stream = ollama.generate(
        model='llama3.2',
        prompt='AI에 대한 시를 작성해주세요.',
        stream=True
    )
    
    for chunk in stream:
        print(chunk['response'], end='', flush=True)

7. 성능 최적화

다음 팁을 사용하여 Ollama의 성능을 최적화하세요:

  1. GPU 가속:
    • 최신 GPU 드라이버가 설치되어 있는지 확인
    • NVIDIA GPU의 경우 CUDA 및 cuDNN 설치
    • Ollama는 사용 가능한 경우 자동으로 GPU를 사용
  2. 모델 선택:
    • 제한된 하드웨어에서 더 빠른 응답을 위해 더 작은 모델 선택
    • 더 나은 성능을 위해 양자화 버전(예: Q4_K_M) 고려
  3. 매개변수 조정:
    • 메모리 사용량과 성능의 균형을 맞추기 위해 컨텍스트 길이 조정:
      ollama run llama3.2 --parameters num_ctx=2048
    • 더 빠른 추론을 위해 온도 조정:
      ollama run llama3.2 --parameters temperature=0.1
  4. 리소스 모니터링:
    • 모델 실행 중 CPU, GPU 및 메모리 사용량 모니터링
    • htopnvidia-smi 또는 top과 같은 도구를 사용하여 리소스 사용량 추적
  5. 캐시 관리:
    • Ollama는 성능 향상을 위해 생성된 응답을 캐시함
    • 필요한 경우 캐시 지우기: rm -rf ~/.ollama/cache

8. 보안 고려 사항

API가 활성화된 Ollama를 호스팅할 때 다음 보안 조치를 고려하세요:

  1. 네트워크 노출:
    • 기본적으로 Ollama는 localhost(127.0.0.1)에 바인딩되며, 이는 안전함
    • 다른 머신에서 액세스해야 하는 경우에만 OLLAMA_HOST=0.0.0.0 사용
    • 안전한 원격 액세스를 위해 TLS가 있는 리버스 프록시(Nginx와 같은) 사용 고려
  2. 액세스 제어:
    • Ollama 포트에 대한 액세스를 제한하는 방화벽 규칙 구현
    • 네트워크에 노출시키는 경우 인증 설정 고려
  3. 모델 보안:
    • 신뢰할 수 있는 출처의 모델만 사용
    • 알 수 없는 출처의 사용자 정의 모델에 주의
  4. API 토큰(사용자 정의 인증을 구현하는 경우):
    • 애플리케이션을 위한 API 토큰 시스템 구현 고려
    • Nginx와 같은 리버스 프록시를 사용한 예:
      location /api/ {
          auth_basic "Restricted";
          auth_basic_user_file /etc/nginx/.htpasswd;
          proxy_pass http://localhost:11434;
      }

9. 일반적인 문제 해결

설치 문제

  • 권한 거부 오류:
    sudo chmod +x /path/to/ollama
  • 라이브러리 종속성 누락(Linux):
    sudo apt-get install build-essential

API 연결 문제

  • API에 연결할 수 없음:
    • Ollama가 실행 중인지 확인: ps aux | grep ollama
    • 포트가 열려 있는지 확인: netstat -tuln | grep 11434
    • 방화벽 설정 확인: sudo ufw status
  • 403 Forbidden 오류:
    • 네트워크 구성 및 바인딩 주소 확인

성능 문제

  • 높은 메모리 사용량:
    • 더 작은 모델 또는 양자화 버전 사용
    • 컨텍스트 길이 감소: --parameters num_ctx=2048
  • 느린 응답:
    • 가능한 경우 GPU 가속 활성화
    • 제한된 하드웨어에서 더 작은 모델 사용
    • 배치 크기 조정: --parameters num_batch=128
  • GPU가 감지되지 않음:
    • GPU 드라이버 업데이트
    • NVIDIA의 경우 CUDA가 제대로 설치되어 있는지 확인
    • GPU와 CUDA의 호환성 확인

결론

이제 API 호스팅과 함께 로컬 환경에서 Ollama를 설정하는 방법에 대한 포괄적인 이해를 갖게 되었습니다. 이 가이드를 따르면 특정 요구 사항에 맞게 Ollama를 설치, 구성 및 최적화하는 방법을 배웠습니다. 이제 API를 사용하여 Ollama를 애플리케이션에 통합하고 강력한 언어 모델을 로컬에서 실행할 수 있습니다.

최신 업데이트 및 자세한 문서는 공식 Ollama GitHub 저장소를 방문하세요: https://github.com/ollama/ollama.

참고 문헌

  1. Ollama API 문서: https://github.com/ollama/ollama/blob/main/docs/api.md
  2. Ollama GitHub 저장소: https://github.com/ollama/ollama
  3. Ollama Python 라이브러리: https://github.com/ollama/ollama-python
  4. Ollama 공식 웹사이트: https://ollama.com/download

출처: https://memoryhub.tistory.com/entry/로컬-환경에서-API-호스팅을-위한-Ollama-설정-종합-가이드 [메모리허브:티스토리]

Loading

15 4월 2025

[인공지능 기술] Replit Agent 사용법 – AI 기반 코딩 도구로 쉽게 개발하기

[인공지능 기술] Replit Agent 사용법 – AI 기반 코딩 도구로 쉽게 개발하기

Replit Agent 사용법 – AI 기반 코딩 도구로 쉽게 개발하기

 · 7 min read
프롬프트해커 대니

다양한 분야에서 AI를 할용하는 ChatGPT전문가. 스타트업 창업, 개발자, 구글 SEO 성공 경험을 바탕으로 실용적인 AI사례를 발견합니다.

프로그래밍을 처음 접하는 분들에게 개발 환경 설정은 큰 걸림돌이 될 수 있습니다. 하지만 Replit라는 온라인 통합개발환경(IDE)을 사용하면 별도의 설치 없이 브라우저에서 바로 코딩을 시작할 수 있습니다. 최근에는 AI 기반 코딩 도우미 Replit Agent까지 추가되어 더욱 편리해졌습니다. 이번 글에서는 Replit과 Replit Agent의 사용법을 자세히 알아보겠습니다.

Replit 이란?

Replit은 웹 브라우저에서 바로 실행할 수 있는 온라인 IDE입니다. 별도의 설치 없이 코드를 작성하고 실행할 수 있어 초보 개발자들에게 큰 도움이 됩니다. 또한 다양한 프로그래밍 언어를 지원하고 협업 기능을 제공하여 팀 프로젝트에도 활용할 수 있습니다.

01 what-is-replit-35afbf33bef30d825ee6ca617d431144.png

오늘은 Replit의 다양한 기능중 AI 기반 코딩 도우미인 Replit Agent 사용법에 대해 자세히 알아보겠습니다.

Replit Agent 사용법

Replit Agent는 AI 기반 코딩 도우미로, 자연어 프롬프트를 이해하고 코드를 생성할 수 있습니다. 이를 통해 모든 수준의 개발자가 소프트웨어 개발에 더욱 쉽게 접근할 수 있습니다.

1) Replit 웹사이트에 접속 하고 로그인 합니다.

02 replit-first-screen-e1e4b377450cddd1584165106bb17238.png

2) Replit Agent에게 구축할 내용을 자연어로 입력합니다.

아래와 같은 프롬프트를 입력하여 Replit Agent에게 코드를 생성해달라고 요청할 수 있습니다.

03 replit-agent-prompt-example-10c36aff3fc2c20c1287a6461b865129.png

Replit Agent 프롬프트

주식 종목 코드를 입력하면 재무 데이터 요약을 얻고 싶습니다. 주가와 다른 주요 재무 정보를 추적하는 표와 차트를 보여주세요. Yahoo 파이낸스의 데이터를 사용해 주세요. 표 데이터를 CSV 파일로 다운로드할 수 있게 해주세요.

3) Agent가 생성한 계획을 검토하고 수정합니다.

프롬프를 입력 하면 Replit Agent가 코드를 생성하고, 생성된 코드를 검토하고 수정할 수 있습니다.

04 replit-planning-e10b74f87031825db3d9f54196829abf.png

코드 생성 계획이 마음에 들면 ‘Approve plan & Start’ 버튼을 클릭하여 코드 생성을 시작합니다.

4) Replit Agent 의 진행 상황을 모니터링하고, API 키나 피드백 등을 제공합니다.

Replit Agent 가 코드를 생성하는 동안 진행 상황을 모니터링하고, 필요한 정보를 입력하거나 추가 질문을 할 수 있습니다.

아래와 같이 Replit Agent가 라이브러리 설치도 자동으로 진행됩니다. 05 replit-install-9797b3382e6fd1d0d64bab10bf4d0c5c.png

라이브러리 설치 과정이 비개발자 입장에서는 어려울수 있지만 Replit Agent가 자동으로 처리해주기 때문에 사용자는 코드 생성에만 집중할 수 있습니다.

5) 생성된 코드 확인

이렇게 코드 작성이 완료 되면 코드와 함께 실행 결과를 preview로 보여 줍니다.

06 replit-agent-result4-9cb89a0503143a72b98f7c205ce6bb6e.png

코드 뿐만 아니라 실행 결과를 아래와 같이 preview로 보여 줍니다.

07 replit-agent-result1-f34a0b0a592e29b5cbee939512fcc240.png

아래와 같이 특정 주식의 Symbol을 입력 하면 주식 정보를 보여줍니다.

08 replit-agent-result2-3fde3e875b9fee4a6efe6fdcf989e92d.png

아래 차트 까지 잘 그려준 걸 볼 수 있습니다. 09 replit-agent-result3-1c1a01f23123dd991b20885c45872b62.png

6) 최종적으로 애플리케이션을 배포합니다.

이렇게 작성된 코드를 작성 하는것 뿐만 아니라 서버에 배포 까지 할 수 있습니다.

협업 기능

Replit은 다른 사용자를 프로젝트에 초대하여 실시간으로 협업할 수 있는 기능을 제공합니다.

  1. 왼쪽 패널에서 “Invite” 버튼을 클릭합니다.
  2. 이메일 주소나 Replit 계정 이름을 입력하여 초대합니다.
  3. 또는 “Private Invite Link”를 복사하여 공유할 수 있습니다.

초대받은 사용자는 코드를 실시간으로 수정할 수 있으며, 다른 사용자의 커서 움직임도 확인할 수 있습니다.

기타 기능

  • 다양한 테마와 에디터 설정을 제공하여 개인 취향에 맞게 커스터마이징할 수 있습니다.
  • 파일 업로드/다운로드, 버전 관리 등의 기능을 지원합니다.
  • 유료 플랜을 구독하면 더 많은 기능과 리소스를 사용할 수 있습니다.

Replit은 비개발자인 초보자부터 전문가까지 모든 개발자가 쉽고 편리하게 코딩할 수 있는 환경을 제공합니다. AI 기반 Replit Agent의 도입으로 소프트웨어 개발 접근성이 한층 더 향상되었습니다. 브라우저만 있다면 언제 어디서나 Replit으로 코딩을 시작해보세요!

[출처] https://www.magicaiprompts.com/blog/replit-usage-guide

Loading

30 3월 2025

[인공지능 기술]  [Pytorch] Pytorch & LLM Training Pipeline (pytorch로 chatgpt만들기, 기본예제)

[인공지능 기술]  [Pytorch] Pytorch & LLM Training Pipeline (pytorch로 chatgpt만들기, 기본예제)

Pytorch

Pytorych

What

Pytorch는 Opensource Machine Learning(ML) Framework로, Python 언어와 Torch Library를 기반으로 한다. Torch는 Opensource ML Library로, Deep learning을 이용하기 위해서 Lua Scripting으로 작성되었다. 현재, DL 연구를 위해서 가장 선호되는 플랫폼이다.

How to use?

Tools

Pytorch는 클라우드와 로컬, 두 가지 환경에서 활용할 수 있다.

  • In the cloud: Pytorch를 접근하기 가장 쉬운 방법으로, Microsoft를 통해서 접근하거나 Google Colab에서 실행해 볼 수 있다. 링크에만 접근한다면 Microsoft와 Colab에 작성된 Notebook에서 코드를 실행할 수 있다.
  • Locally: 로컬에서는 PyTorch and TorchVision 등을 우선 설치해야한다. 설치 가이드(installation instructions)를 따라서 설치할 수 있다. 다양한 버전이 홈페이지에 게재되어있다. Notebook을 활용하거나 IDE()에서 코드를 작성하여 실행하면 된다.

Pipieline

01 Prerequisites

Pytorch는 python 프로그래밍을 통해,딥러닝과 트랜스포머 개념을 구현해야한다.

02 Library installation

trl : Transformer language odel을 Reinforcement Leanring으로 학습하는데 사용한다.
peft : Prameter-effiecient Fine-tuning(PEFT)방법을 통해서 효율적으로 pre-treined model을 조정한다.
torrch : Opensource ML library
datasets : ML datasets을 로딩(loading) 또는 다운로딩(downloading)하기 위해 하용한다.
Trasformers : Hugging Face가 개발한 라이브러리로, 분류/요약/번역 등과 같은 다양한 텍스트를 위한 task를 수행하기 위해 수천 개의 PLM(pre-trained model)모델을 제공한다.

02-1 pip 를 통해서 pythong package 다운로드한다.

%%bash
pip -q install trl
pip -q install peft
pip -q install torch
pip -q install datasets
pip -q install transformers

02-1 import 통해서 pythong package를 가져온다

import torch
from trl import SFTTrainer
from datasets import load_dataset
from peft import LoraConfig, get_peft_model, prepare_model_for_int8_training
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments

03 Data Loading and Preparation

03-01 Data loading

허깅페이스의 공개 데이터셋을 로드한다.
load_dataset : 데이터 로드
dataset_name : 로드하기 위한 데이터셋 이름
split parameter를 “train“로 설정하여 학습(traing)데이터로만 설정된 데이터 로드

dataset_name="tatsu-lab/alpaca"
train_dataset = load_dataset(dataset_name, split="train")
print(train_dataset)

03-02 Converting the dictionary into a pandas dataframe

로드한 데이터는 dictionary 타입으로, pandas의 dataframe으로 변환한다.

.to_pandas() : train_dataset을 pandas dataframe으로 변환

pandas_format = train_dataset.to_pandas()
display(pandas_format.head())

04 Model Training

  • Pre-trained Model : Pretrained 모델
  • Tokenizer : 데이터의 토큰화(tokenization)를 위해 사용하며, PLM과 tokenizer를 가져옴
  • AutoModelForCausalLM :
    • from_pretrained 메서드로 PLM을 가져오기 위해 사용
    • pretrained_model_name은 PLM 모델을 지정하며, data type은 모델의 tensor를torch.bfloat16로 설정

*AutoTokenizer:

  • from_pretrained : 가 PLM에 맞는 tokenizer를 가져오기 위해 사용하는 메서드
  • pretrained_model_name과 trust_remote_code를 true로 설정
pretrained_model_name = "Salesforce/xgen-7b-8k-base"
model = AutoModelForCausalLM.from_pretrained(pretrained_model_name, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name, trust_remote_code=True)

05 Training configuration

Training을 위해 training arguments(인수)와 training configurations(구성)이 필요하다. 이는 TrainingArguments로 구성하며, LoraConfig model과 SFTTrainer model의 인스턴스이다.

06 TrainingArguments

output_dir 학습 모델 저장 위치
per_device_train_batch_size 한 학습에 사용하기 위한 학습 샘플의 사이즈
optim 옵티마이저
logging_steps 로깅을 위한 빈도로, n번의 스텝마다 기록
learning_rate 옵티마이저의 learning rate 설정
warmup_ratio
lr_scheduler_type
num_train_epochs
save_strategy

model_training_args = TrainingArguments(
       output_dir="xgen-7b-8k-base-fine-tuned",
       per_device_train_batch_size=4,
       optim="adamw_torch",
       logging_steps=80,
       learning_rate=2e-4,
       warmup_ratio=0.1,
       lr_scheduler_type="linear",
       num_train_epochs=1,
       save_strategy="epoch"
   )

07 LoRAConfig

LoRa(Low-Rank Adaptation)은 Hugging Face가 개발한 PEFT이다. peft 라이브러를 통해서 사용할 수 있다.
현재의 파이프라인에서는 하위 변환 행렬을 16으로 설정한다. LoRa의 매개변수의 스케일링 계수는 32로 서렁한다. 드롭아웃 비율은 0.05로 설정되었다.
CASULA_LM은 인과적 언어 모델(causual lanauge model)의 속성을 초기화한다.

08 SFTTrainer

training data, tokenizer, 모델의 추가 정보를 이용하여 학습한다.

아래는 로드한 텍스트 칼럼의 길이를 컬럼을 추가하여 저장하는 것이다. 이 데이터셋은 0~1000 크기의 텍스트 분포가 크다. (분포를 보여주는 표는 생략)
1024보다 큰 값의 비율을 구한다.

pandas_foramt은 특정 칼럼의 크기가 1024보다 큰것을 찾아 mask로 저장
percentage에 mask가 ‘texst_length’컬럼에서 차지하는 비율을 구함

pandas_format['text_length'] = pandas_format['text'].apply(len)

mask = pandas_format['text_length'] > 1024
percentage = (mask.sum() / pandas_format['text_length'].count()) * 100

print(f"The percentage of text documents with a length greater than 1024 is: {percentage}%")
  • 아래 코드는 SFTTrainer 의 인스턴스를 만들고 있다.
    model=model PLM을 SFTTrainer에 전달
    train_dataset=train_dataset train dataset을 SFTTrainer에 전달
    dataset_text_field="text" 텍스트 데이터를 포함하는 dataset 필드 지정
    max_seq_length=1024 모델 력의 최대 시퀀스 길이를 설정
    tokenizer=tokenizer tokenizer를 SFTTrainer에 전달
    args=model_training_args 모델 트레이닝을 위한 인수를 SFTTrainer에 전달
    packing=True효율적인 훈련을 위한 시퀀스 패킹 설정
    peft_config=lora_peft_config PEFT에 loraConfig 설정
SFT_trainer = SFTTrainer(
       model=model,
       train_dataset=train_dataset,
       dataset_text_field="text",
       max_seq_length=1024,
       tokenizer=tokenizer,
       args=model_training_args,
       packing=True,
       peft_config=lora_peft_config,
   )

09 Training execution

tokenizer.pad_token =tokenizer.eos_token padding token을 eos_token으로 설정(eos, end of sequence)
model.resize_token_embeddings(len(tokenizer)) 모델의 토큰 임베딩 계층을 tokenizer 길이로 설정
model=prepare_model_for_int8_training(model)) 양자화처럼, INT8 정밀도로 트레이닝할 수 있도록 준비
model = get_peft_model (model, lora_peft_config) 주어진 모델을 PEFT 구성에 따따 조정
training_args = model_training_args training_args에 미리 정의된 training 인수를 할당
trainer =SFT_Trainer SFTTrainer 인스턴스를 trainer에 저장
trainer.train() (위의) 설정에 따라 모델을 학습

tokenizer.pad_token = tokenizer.eos_token
model.resize_token_embeddings(len(tokenizer))
model = prepare_model_for_int8_training(model)
model = get_peft_model(model, lora_peft_config)
training_args = model_training_args
trainer = SFT_trainer
trainer.train()

Reference
[1] https://pytorch.org/tutorials/beginner/basics/intro.html
[2] https://www.datacamp.com/tutorial/how-to-train-a-llm-with-pytorch
[3] https://github.com/keitazoumana/Medium-Articles-Notebooks/blob/main/Train_your_LLM.ipynb

[출처] https://velog.io/@jasmine_s2/Pytorch-Pytorch-LLM-Training-Pipeline

Loading

29 3월 2025

[인공지능 기술] 바닥부터 시작하는 인공지능  [수학공부]인공지능을 위한 수학 총정리/ 요약본 다운로드

[인공지능 기술] 바닥부터 시작하는 인공지능  [수학공부]인공지능을 위한 수학 총정리/ 요약본 다운로드

안녕하세요. 오늘은 “인공지능을 위한 수학”이라는 책을 읽은 감상을 남겨보려고 합니다. 우선, 이 책은 일본에서 출판된 책인데요, 

 

 

[요약본] 딥러닝을 위한 수학 Math.pdf

 

 

딥러닝, 머신러닝에 입문하는 사람들 중 수학에 해박하지 않은 사람들을 위해 기본적이지만 핵심적인 수학적 내용을 담고있는 책입니다.

물론 저도 수학을 좋아하기는 해도 막상 딥러닝을 공부하다보면 애매하게 느껴지거나 잘 이해가 안되는 수학적인 부분이 있었는데요, 이 책을 읽고 나서 상당부분 해결이 됐고, 조금은 자신감이 생긴것 같습니다.

 

 

 

이 책은 문과를 졸업한 사람도 충분히 읽을 수 있도록 친절하게 설명되어있어요. 삼각함수, 미분, 선형대수, 통계와 같은 기본적인 내용들과 함께 자연어처리, 이미지처리에서 쓰이는 수학적인 부분들도 쉽지만 꽤 자세하게 설명이 되어있기 때문에 도움이 많이 되었습니다.

머신러닝, 딥러닝에 입문하시는 분이시라면 꼭 읽어보시기를 추천드려요.

 

 

 

하지만 이런저런 공부를 하다보면 시간이 충분하지 않죠. 그래서 오늘은 제가 읽고 핵심내용을 정리한 요약본은 여러분께 공유하고자 합니다.

 

 

직접 제작한 표지

 

제가 모르는 부분을 중점적으로 정리한 것이기 때문에 요약본만 보고는 이해가 완벽하지 않을 수 있기 때문에 모르는 부분은 책을 더 참고하시거나, 아니면 댓글로 남겨주시면 제가 시간이 될때 답변 해드리도록 할게요! 

 

 

아래 이미지는 어떤식으로 정리되어있는지 보여드리기 위한 샘플입니다. 전체 pdf본을 원하시는 분은 첨부파일에서 다운받으실 수 있어요(최상단 참조).

받아가실때 댓글 한번씩 부탁드립니다 ^^

 

vector부분 정리

 

선형회귀부분 정리

 

자연어처리 부분 정리

 

[출처] https://doctorham.tistory.com/30
 

Loading

14 3월 2025

[기계학습][머신러닝] [인공지능] 지도학습, 비지도학습, 강화학습

[기계학습][머신러닝] [인공지능] 지도학습, 비지도학습, 강화학습

 

머신러닝의 학습 방법은 크게 3가지로 분류됩니다.

  • 지도학습
  • 비지도학습
  • 강화학습

지도 학습은 말 그대로 정답이 있는 데이터를 활용해 데이터를 학습시키는 것입니다. 입력 값(X data)이 주어지면 입력값에 대한 Label(Y data)를 주어 학습시키며 대표적으로 분류, 회귀 문제가 있습니다.

예를 들어, 입력 데이터 셋을 3*5, 32*44 등을 주고 라벨 데이터 셋을 입력 데이터셋의 정답인 15, 1408등을 주면 해당 모델은 주어지지 않은 데이터 셋 9*3의 정답을 해결할 수 있게 됩니다.


– 지도학습 종류

 

    1) 분류(Classification)

분류는 주어진 데이터를 정해진 카테고리(라벨)에 따라 분류하는 문제를 말합니다. darknet의 YOLO, network architecture는 GoodLeNet for image classification을 이용하여 이미지를 분류하고 있습니다. 분류는 맞다, 아니다 등의 이진 분류 문제 또는 사과다 바나나다 포도다 등의 2가지 이상으로 분류하는 다중 분류 문제가 있습니다.

예를 들어 입력 데이터로 메일을 주고 라벨을 스팸메일이다, 아니다 를 주면 모델은 새로운 메일이 들어올 때 이 메일이 스팸인지 아닌지 분류를 할 수 있게 됩니다.

스팸메일 분류 예제

    2) 회귀(Regression)

회귀는 어떤 데이터들의 Feature를 기준으로, 연속된 값(그래프)을 예측하는 문제로 주로 어떤 패턴이나 트렌드, 경향을 예측할 때 사용됩니다. 즉 답이 분류 처럼 1, 0이렇게 딱 떨어지는 것이 아니고 어떤 수나 실수로 예측될 수 있습니다.

예를 들어 서울에 있는 20평대 아파트 집값 가격, 30평대 아파트 가격, 지방의 20평대 아파트 가격등을 입력데이터로 주고 결과를 주면, 어떤 지역의 30평대 아파트 가격이 어느정도 인지 예측할 수 있게 됩니다.

보스턴 주택 가격 예측 예제


머신러닝은 어떤 데이터를 분류하거나, 값을 예측(회귀)하는 것입니다. 이렇게 데이터의 값을 잘 예측하기 위한 데이터의 특징들을 머신러닝/딥러닝에서는 “Feature”라고 부르며, 지도, 비지도, 강화학습 모두 적절한 feature를 잘 정의하는 것이 핵심입니다. 엑셀에서 attribute(column)라고 불려지던 것을 머신러닝에서는 통계학의 영향으로 feature라고 부릅니다. 과거에 딥러닝 이전의 머신러닝에서는 Raw데이터를 피처 엔지니어가 직접 적절한 피처를 만들고, 머신러닝 모델의 결과로 아웃풋을 냈었는데, 딥러닝 이후로 Raw데이터를 딥러닝 모델에 넣어주면 모델이 알아서 feature를 알아내고 아웃풋을 내는 형식으로 발전하게 되었습니다. (머신러닝 모델이 피처를 알아서 찾아준다고 하여도 여전히 전처리 작업은 중요합니다.)

예를 들어 고양이, 강아지 사진은 분류한다고 하면 고양이는 귀가 뾰족하다 거나 눈코입의 위치, 무늬 등이 피처가 됩니다. 키와 성별을 주고 몸무게를 예측한다고 하면 키와 성별이 피처가 됩니다.

Feature는 Label, Class, Target, Response, Dependent variable 등으로 불려집니다.


지도 학습과는 달리 정답 라벨이 없는 데이터를 비슷한 특징끼리 군집화 하여 새로운 데이터에 대한 결과를 예측하는 방법을 비지도학습 이라고 합니다. 라벨링 되어있지 않은 데이터로부터 패턴이나 형태를 찾아야 하기 때문에 지도학습보다는 조금 더 난이도가 있다고 할 수 있습니다. 실제로 지도 학습에서 적절한 피처를 찾아내기 위한 전처리 방법으로 비지도 학습을 이용하기도 합니다.

비지도학습의 대표적인 종류는 클러스터링(Clustering)이 있습니다. 이 외에도 Dimentionality Reduction, Hidden Markov Model이 있습니다. 예를 들어 여러 과일의 사진이 있고 이 사진이 어떤 과일의 사진인지 정답이 없는 데이터에 대해 색깔이 무엇인지, 모양이 어떠한지 등에 대한 피처를 토대로 바나나다, 사과다 등으로 군집화 하는 것입니다.

지도/비지도 학습 모델(Semi-Supervised Learning)을 섞어서 사용할 수도 있습니다. 소량의 분류된 데이터를 사용해 분류되지 않은 더 큰 데이터 세트를 보강하는 방법으로 활용할 수 도 있습니다.

최근 각광받고 있는 GAN(generative Adversarial Network)모델도 비지도 학습에 해당합니다.


  • 지도학습, 비지도학습의 대표적인 알고리즘

 지도학습(Supervised Learning),  Classification  kNN
 Naive Bayes
 Support Vector
 Machine Decision
 Regression  Linear Regression
 Locally Weighted Linear
 Ridge
 Lasso
 비지도학습(Unsupervised Learning),    Clustering
 K Means
 Density Estimation
 Exception Maximization
 Pazen Window
 DBSCAN

출처: https://wendys.tistory.com/169


머신러닝의 꽃이라 불리는 강화학습(RL)은 지도, 비지도 학습과는 조금 다른 개념입니다.

우리가 잘 아는 알파고는 이 ‘강화학습’ 모델로 만들어졌습니다.

행동 심리학에서 나온 이론으로 분류할 수 있는 데이터가 존재하는 것도 아니고 데이터가 있어도 정답이 따로 정해져 있지 않으며 자신이 한 행동에 대해 보상(reward)를 받으며 학습하는 것을 말합니다.

– 강화학습의 개념

  • 에이전트(Agent)
  • 환경(Environment)
  • 상태(State)
  • 행동(Action)
  • 보상(Reward)

게임을 예로들면 게임의 규칙을 따로 입력하지 않고 자신(Agent)이 게임 환경(environment)에서 현재 상태(state)에서 높은 점수(reward)를 얻는 방법을 찾아가며 행동(action)하는 학습 방법으로 특정 학습 횟수를 초과하면 높은 점수(reward)를 획득할 수 있는 전략이 형성되게 됩니다. 단, 행동(action)을 위한 행동 목록(방향키, 버튼)등은 사전에 정의가 되어야 합니다.

만약 이것을 지도 학습(Supervised Learning)의 분류(Classification)를 통해 학습을 한다고 가정하면 모든 상황에 대해 어떠한 행동을 해야 하는지 모든 상황을 예측하고 답을 설정해야 하기 때문에 엄청난 예제가 필요하게 됩니다.

바둑을 학습한다고 했을 때, 지도 학습(Supervised Learning)의 분류(Classification)를 이용해 학습하는 경우 아래와 같은 개수의 예제가 필요해지게 됩니다.

강화 학습(reinforcement learning)은 이전부터 존재했던 학습법이지만 이전에 알고리즘은 실생활에 적용할 수 있을 만큼 좋은 결과를 내지 못했습니다.

하지만 딥러닝의 등장 이후 강화 학습에 신경망을 적용하면서부터 바둑이나 자율주행차와 같은 복잡한 문제에 적용할 수 있게 되었습니다. 좀 더 자세히 설명하면 고전적인 강화학습 알고리즘은 앞으로 나올 상태에 대한 보상을 모두 계산해야 하는데 실제 세상과 같이 상태 공간이 크면 현실적으로 계산을 할 수 없습니다. 최근에는 계산하는 대신 신경망을 통해 근삿값을 구함으로써 복잡한 문제를 해결할 수 있게 되었습니다.

강화학습에 딥러닝을 성공적으로 적용한 대표적 알고리즘으로는 DQN과 A3C가 있는데요. 두 알고리즘 모두 딥마인드에서 발표했으며 다른 강화학습 알고리즘의 베이스라인이 되었습니다.

 

[References]

https://blogs.nvidia.co.kr/2018/09/03/supervised-unsupervised-learning/

https://wendys.tistory.com/170

출처: https://ebbnflow.tistory.com/165 [삶은 확률의 구름:티스토리]

Loading

1 3월 2025

[ 一日30分 인생승리의 학습법] 소프트웨어 개발하다보면 “connection reset” 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예

[ 一日30分 인생승리의 학습법] 소프트웨어 개발하다보면 “connection reset” 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예

소프트웨어 개발하다보면 “connection reset” 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예
DALL·E 2025-03-01 17.05.42 - A digital illustration showing various software and hardware error scenarios in a computer system. The image should include___1. A server room with bl.png
소프트웨어 개발을 하다 보면 프로그램 자체의 버그가 아닌 하드웨어 문제, 네트워크 오류, 시스템 환경 문제 등으로 인해 발생하는 다양한 오류 메시지를 접할 수 있습니다. 대표적인 사례들을 몇 가지 범주로 나누어 설명하겠습니다.

1. 네트워크 및 연결 문제

네트워크 문제는 클라이언트-서버 간 통신 중단, 패킷 손실, 방화벽 설정 오류 등으로 인해 발생합니다.
  • Connection reset by peer
    • 원인: 서버 또는 클라이언트가 연결을 강제로 종료함 (예: 서버가 강제 종료되거나, 클라이언트의 네트워크 장애 발생)
    • 해결: 서버와 클라이언트의 네트워크 상태 확인, 방화벽 설정 점검
  • Connection timed out
    • 원인: 네트워크 응답이 없거나, 방화벽에서 포트 차단
    • 해결: 서버 상태 확인, 네트워크 방화벽 및 라우팅 설정 점검
  • Host unreachable
    • 원인: 대상 서버가 네트워크 상에서 접근 불가능
    • 해결: 서버의 네트워크 설정 확인, 라우팅 문제 해결
  • Broken pipe
    • 원인: TCP 연결이 예상치 않게 끊김 (예: 서버가 클라이언트가 읽기 전에 종료됨)
    • 해결: 클라이언트-서버 연결 안정성 확보, 재시도 로직 추가

2. 디스크 및 파일 시스템 문제

디스크 문제는 파일 저장, 접근 중 발생하는 오류로, 스토리지 장치 상태에 따라 발생할 수 있습니다.
  • No space left on device
    • 원인: 디스크 용량 부족
    • 해결: 불필요한 파일 정리, 디스크 증설
  • Read-only file system
    • 원인: 디스크가 읽기 전용 모드로 변경됨 (예: 파일 시스템 손상으로 자동 마운트됨)
    • 해결: 파일 시스템 체크 (fsck 실행), 마운트 옵션 확인
  • I/O error
    • 원인: 하드웨어 장애 또는 디스크 손상
    • 해결: 디스크 상태 검사 (smartctl 사용), 백업 후 디스크 교체
  • Too many open files (EMFILE)
    • 원인: 프로세스가 동시에 너무 많은 파일을 열어 제한 초과
    • 해결: ulimit -n으로 파일 핸들 개수 증가

3. 메모리 및 CPU 관련 문제

메모리 부족, CPU 과부하로 인해 발생하는 오류 메시지들입니다.
  • Out of memory (OOM Killer activated)
    • 원인: 시스템 메모리가 부족하여 커널이 프로세스를 강제 종료
    • 해결: 메모리 사용량 최적화, 스왑 설정, 필요 시 메모리 증설
  • Segmentation fault (core dumped)
    • 원인: 잘못된 메모리 접근 (일반적으로 소프트웨어 버그, 그러나 하드웨어 문제일 수도 있음)
    • 해결: 코드 디버깅, RAM 상태 점검
  • Bus error
    • 원인: CPU가 접근할 수 없는 메모리 영역에 접근 시 발생
    • 해결: RAM 오류 확인, CPU 상태 점검
  • High CPU Load (load average too high)
    • 원인: CPU 사용률 과부하 (예: 무한 루프, 병목 현상)
    • 해결: tophtop 명령어로 원인 분석 후 코드 최적화

4. 하드웨어 및 장치 오류

서버, 장치, 외부 하드웨어 문제로 인해 발생하는 오류 메시지들입니다.
  • Device not found
    • 원인: 특정 하드웨어(예: USB, GPU)가 인식되지 않음
    • 해결: dmesg 로그 확인, 장치 드라이버 재설치
  • Thermal shutdown
    • 원인: CPU 또는 GPU 온도 과열로 인해 시스템이 강제 종료됨
    • 해결: 냉각 시스템 점검, 서멀 페이스트 재도포
  • Kernel panic – not syncing: Fatal exception in interrupt
    • 원인: 커널 오류 또는 하드웨어 문제
    • 해결: 부팅 로그 확인 (journalctl -xb), RAM 및 디스크 점검

5. 데이터베이스 및 스토리지 문제

데이터베이스가 네트워크, 디스크 문제로 인해 접근 불가능할 때 발생하는 메시지입니다.
  • Lost connection to MySQL server during query
    • 원인: 네트워크 연결 끊김, 데이터베이스 프로세스 종료
    • 해결: 데이터베이스 로그 확인 (/var/log/mysql.log), 네트워크 안정성 점검
  • PostgreSQL: FATAL: the database system is in recovery mode
    • 원인: 데이터베이스가 비정상 종료되어 복구 중
    • 해결: 복구가 끝날 때까지 기다리거나, pg_resetwal 실행
  • MongoDB: WiredTiger error (-31804) [timestamp]: WT_PANIC: fatal WiredTiger error
    • 원인: 스토리지 손상 또는 데이터 손실
    • 해결: 백업에서 복구, mongod --repair 실행

이와 같은 오류 메시지들은 주로 소프트웨어 자체의 버그가 아닌 네트워크, 디스크, 메모리, CPU, 하드웨어 문제로 인해 발생하는 경우입니다. 문제를 해결하려면 시스템 로그(dmesgjournalctlsyslog)를 확인하고, 하드웨어 상태를 점검하는 것이 중요합니다.
 
 
 
 
 

Loading

20 2월 2025

[알아봅시다][COMPUTERS] MS, 세상 뒤집을 양자 칩 공개… 수년내 AI 학습속도 100배

[알아봅시다][COMPUTERS] MS, 세상 뒤집을 양자 칩 공개… 수년내 AI 학습속도 100배

MS, 세상 뒤집을 양자 칩 공개… 수년내 AI 학습속도 100배

01 LOWLCBASGVG2JFYRHD3SB5DGPY.png
 
18일 MS가 공개한 양자컴 반도체 마요나라 1/마이크로소프트

미국 마이크로소프트(MS)가 양자 컴퓨터 상용화의 최대 걸림돌로 꼽혀온 양자 오류와 집적도 한계 등을 뛰어넘는 양자컴 칩을 개발했다고 밝혔다. 온도·자기장 등 외부 환경 변화에 극히 민감해 오류가 잦고 보정이 어려웠던 기존 칩의 치명적 단점을 해결해 양자컴 시대를 앞당길 수 있게 됐다는 것이다.

19일 MS는 “세계 최초로 ‘위상(位相) 초전도체’를 사용한 양자 칩 ‘마요라나 1′을 개발했다”며 “반도체 발명이 오늘날의 스마트폰, 컴퓨터, 전자 제품을 가능하게 한 것처럼 이번 개발로 양자컴 시대가 몇 년 안에 실현될 수 있을 것”이라고 밝혔다. MS는 이번 양자 칩 개발을 트랜지스터 발명에 비유했다.

02 HIO7BAAHVVGRXJM5SA7VSBNOVQ.png
그래픽=양인성

MS는 양자컴 연산의 기본 단위이자 성능 기준으로 꼽히는 ‘큐비트’ 수를 향후 100만개로 확장할 수 있게 됐다고 밝혔다. 현재 IBM과 구글의 양자컴이 1000큐비트급인 점을 감안하면, 1000배에 달하는 규모를 구현할 수 있다고 공언한 것이다. 진공관 시대에 집채만 했던 컴퓨터가 트랜지스터 발명을 계기로 소형화되면서 ‘개인용 컴퓨터’ 시대가 열린 것처럼, 이번 양자컴 기술이 신소재·의료·환경·국방·보안 등 경제·산업·사회 각 분야에 혁명과도 같은 변화를 예고한 것이라는 기대가 나온다.

◇수년내 AI 학습속도 100배… “트랜지스터 발명과 맞먹어”

마이크로소프트(MS)가 19일 자체 개발했다고 공개한 양자컴 칩 ‘마요라나 1’에는 큐비트 8개가 탑재됐다. 큐비트는 양자컴 연산의 기본 단위다. 기존의 일반 컴퓨터는 전자의 유무(有無)에 따라 0과 1의 비트(bit)로 정보를 표현하고 순차적으로 계산하는 반면, 양자컴은 예컨대 0과 1을 동시에 처리(중첩)할 수 있어 연산 속도가 획기적으로 빠르다. 이번에 MS는 큐비트를 100만개 이상으로도 확장할 수 있도록 양자 칩을 설계했다고 밝혔다. 이번 양자 칩의 핵심인 ‘위상 초전도체’는 인듐 비소와 알루미늄 등으로 구현했다. 이를 통해 양자 정보의 손상을 막고 오류 파악과 수정도 디지털로 자동 제어할 수 있게 됐다. 체탄 나약 MS 퀀텀 하드웨어 부사장은 “큐비트 100만개는 양자컴이 산업에 실질적 변화를 가져오기 위한 필수 임계치”라고 했다. 큐비트가 100만개 이상 탑재되는 시기를 ‘양자컴 상용화’가 시작되는 때로 본다는 것이다.

03 GW3JWPXD3NCYJEZT2E5BRTQ32A.png
그래픽=양인성

◇양자컴 상용화, 무엇을 바꿀까

MS는 100만 큐비트급 양자컴이 개발되면 분자 간 복잡한 상호작용을 비롯해 오늘날의 컴퓨터로는 풀 수 없는 각종 문제가 해결될 것이라고 했다. 예컨대, 교량이나 항공기의 균열 등을 자가 복구하는 물질을 개발할 수 있고, 각종 플라스틱을 분해하는 만능 촉매도 만들 수 있어 환경오염도 풀 수 있다는 것이다. 토양 비옥도를 획기적으로 높여 식량 부족 문제의 돌파구도 열 수 있다고 했다.

이처럼 수퍼컴퓨터를 월등히 초월하는 양자컴이 상용화되면 인공지능(AI) 분야에서도 근본적 혁신이 가능하다는 분석이 나온다. 막대한 양의 데이터를 학습한 뒤 이를 토대로 연산과 추론을 하는 AI에 양자컴 기술이 접목되면 소비 전력을 비롯해 비용과 시간을 대폭 줄이면서 AI 학습 속도를 100배 가까이 높일 수 있다는 것이다. MS는 “AI와 양자컴이 결합한 시대에는 어떤 물질이나 분자, 제품을 개발하고 싶다고 말하면 즉시 실현 가능한 답을 얻을 수 있게 될 것”이라며 “예전 같은 수년간의 시행착오는 없을 것”이라고 했다.

양자 컴퓨터는 또 의료, 경제 등 분야에서도 혁신을 이끌 것으로 기대된다. 양자 컴퓨터를 본격적으로 활용하면 신약 후보 물질을 찾는 데 드는 시간과 비용을 기존의 100분의 1로 절감하고, 궁극적으로 암이나 치매 등 난치병을 쉽게 치료할 수 있는 시대가 열릴 수 있다. 이와 함께 차세대 배터리나 그래핀 등 신소재를 지금보다 훨씬 빠르게 개발할 수 있고, 금융 시장에서도 주가, 금리, 환율 등 다양한 변수를 고려해 리스크를 예측하고 회피하는 금융 모델링이 가능해진다. 이상기후를 예측하는 것도 지금보다 훨씬 정확해질 전망이다.

◇“부작용과 한계도 고려해야”

양자컴이 상용화됐을 때 생기는 위협도 있다. 전문가들은 기존의 암호 기술이 양자컴 앞에서 무력화될 것으로 보고 있다. 기존 컴퓨터로 수천 년을 풀어야 하는 암호도 양자컴으로는 몇 분 안에 풀릴 수 있다.

다만 MS의 이번 기술이 상용화로 직결될지는 두고 봐야 한다는 지적도 있다. 이순칠 한국연구재단 양자기술단장은 “이번 양자 칩은 무오류 양자컴의 실현 가능성을 보였다는 점에서 의미가 있다”면서도 “아직 완벽한 수준의 기술을 입증하진 못한 것으로 보인다”고 했다.

테크 업계에선 새로운 양자 칩 개발을 계기로 양자컴 경쟁이 더욱 뜨거워질 것으로 보고 있다. 앞서 구글이 지난해 12월 공개한 양자 칩 ‘윌로’는 기존 수퍼컴퓨터로 10의 25제곱년이 걸리는 계산을 5분 만에 수행해 냈다. IBM은 지난해 11월 ‘퀀텀 헤론’ 양자 칩을 공개하며 “전작 대비 동일한 연산 작업 시간을 112시간에서 2.2시간으로 크게 단축했다”고 밝혔다. 도용주 광주과학기술원(GIST) 물리광과학과 교수는 “한국은 양자컴 분야에선 후발 주자지만, 위상 초전도체 양자컴은 새로 열리는 분야로 기술적 격차가 크지 않아 추격 가능성을 주목해야 한다”고 했다.

☞양자컴퓨터, 위상 초전도체

양자컴퓨터: 일반 컴퓨터는 전자의 유무(有無)에 따라 0과 1의 비트(bit)로 정보를 표현하고 순차적으로 계산하는 반면, 양자컴퓨터는 0과 1을 동시에 처리(중첩)할 수 있어 연산 속도가 획기적으로 빠르다.

위상 초전도체: 전기저항이 0이 돼 전력 손실 없이 전류를 흐르게 하는 물질을 초전도체라 한다. ‘위상(位相) 초전도체’는 초전도성을 가지면서 형태가 변형돼도 입자 간 위상이 변하지 않아 성질이 쉽게 유지되는 물질이다. 기존 양자 컴퓨터의 초전도체는 온도·빛 등 환경이 조금만 바뀌어도 성질이 변해 연산 오류가 발생했다. ‘위상 초전도체’는 이런 문제를 해결해 정보를 더 오래 안정적으로 유지할 수 있다.

 

04 https___s3.amazonaws.com_arc-authors_chosun_c9d8eb17-ec74-42d4-a9bc-f812ecd50653.png
날카롭되 친절한 글을 쓰겠습니다
 

05 https___author-service-images-prod-us-east-1.publishing.aws.arc.pub_chosun_ccd87091-2d01-4f29-858b-b9378816a850.png
테크부에서 과학 분야와 제약·바이오 업계를 맡고 있습니다.

[출처] https://www.chosun.com/economy/tech_it/2025/02/20/WKLWICF2SBHCBNAA2CRK4YECJY/

Loading

24 1월 2025

[chatgpt] 이전 기사 AI타임스 “오픈AI의 AGI 달성 기준은 인간 넘는 ‘코딩 에이전트’ 출시 순간”.

[chatgpt] 이전 기사 AI타임스 “오픈AI의 AGI 달성 기준은 인간 넘는 ‘코딩 에이전트’ 출시 순간”.

“오픈AI의 AGI 달성 기준은 인간 넘는 ‘코딩 에이전트’ 출시 순간”…’오퍼레이터’는 이번 주 챗GPT에 통합

  •  임대준 기자
  •  
  •  승인 2025.01.23 18:00
2025-01-24-01 openai 167422_182212_5856.png
(사진=셔터스톡)

오픈AI가 소프트웨어 개발을 담당하는 코딩 전문 인공지능(AI) 에이전트를 개발 중으로 알려졌다. 그리고 코딩 에이전트가 최고 수준의 프로그래머를 대체하는 순간을 인공일반지능(AGI)에 도달한 것으로 간주할 것으로 전해졌다.

또 이와는 별도로 개발한 범용 GUI 에이전트 ‘오퍼레이터’는 이번 주 정식 출시를 앞뒀다는 소식이다.

디 인포메이션은 22일(현지시간) 오픈AI 임원진과 이야기를 나눈 3명을 인용, 고급 소프트웨어 개발자보다 복잡한 프로그래밍 작업을 처리하는 AI 에이전트를 개발 중이라고 보도했다.

이에 따르면 오픈AI의 목표는 레벨 6 엔지니어, 즉 선임 스태프 급 엔지니어를 복제하는 것이다. 이 수준의 개발자는 관리자로부터 광범위한 지침을 받고 새로운 소프트웨어나 기능의 설계부터 이를 구동하는 시스템까지 전체를 발할 수 있다.

또 오픈AI의 어시스턴트는 코드 출력뿐 아니라, 코드 베이스에 변경 사항을 적용하려는 경우 슬랙을 통해 인간에게 메시지를 보내 알릴 수도 있는 것으로 전해졌다.

오픈AI의 몇개 팀이 이를 개발하고 있으며, 추론 모델 ‘o1’도 일부 활용한 것으로 알려졌다.

이에 대해 제이슨 리우 재피어 AI 컨설턴트는 오픈AI가 최고 수준의 프로그래머를 타깃으로 하는 것이 합리적이라고 말했다. 수석급 엔지니어는 가장 비용이 많이 들고 대체가 어렵기 때문에, 고급 코딩 에이전트가 기업에 재정적으로 확실한 도움이 된다는 것이다.

또 현재 출시된 코딩 에이전트가 기대에 미치지 못한다고도 지적했다. 리우 컨설턴트는 지난해 코그니션이 출시한 세계 최초의 코딩 에이전트 ‘데빈’과 작업하는 것을 “그저 멍청한 인턴 10명의 관리자가 되는 것 같은 느낌이 든다”라고 표현했다. 따라서 성능이 확실히 뛰어나야 한다는 것이다.

앞서 오픈AI는 지난해 하반기부터 코딩 성능 향상에 초점을 맞추고 집중적인 개발에 매달렸다는 말이 나왔다. 당시 오픈AI 제품이 앤트로픽에 비해 코딩 능력이 가장 떨어진다는 판단 때문이었다.

이번 소식으로 인해 샘 알트먼 CEO가 연초 개인 블로그를 통해 ‘리플렉션’이라는 글을 올리며 “AGI에 도달하는 방법을 이미 알고 있다”라고 한 것과 “연말까지 AI가 인력에 합류할 수 있다”라고 말한 것이 어떤 의미인지 확실해졌다는 분석이다.

한편, 디 인포메이션은 내부 관계자를 인용, 오픈AI가 이번 주에 ‘챗GPT’에 AI 에이전트 ‘오퍼레이터’를 통합 출시할 계획이라고 보도했다.

오퍼레이터는 웹 사이트를 검색하고 여행 계획을 짜며 레스토랑을 예약하는 등 사람 대신 마우스와 키보드를 사용해 일반적인 업무를 처리하는 범용 GUI 에이전트다. 

지난 20일에는 티버 블라호라는 소프트웨어 엔지니어가 맥OS용 챗GPT 클라이언트에서 오퍼레이터의 단축키 옵션을 발견했으며, 오픈AI 홈페이지에서는 벤치마크 결과도 확인했다고 전한 바 있다. 이 때문에 오퍼레이터의 출시가 임박한 것으로 파악됐다.

임대준 기자 ydj@aitimes.com

[출처] https://www.aitimes.com/news/articleView.html?idxno=167422

Loading