GN⁺: 2024년 초 LLM들과 프로그래밍 동향
(antirez.com)- 2023년은 인공지능에 특별한 해임. ChatGPT와 로컬에서 운영되는 LLMs의 등장 이후, 프로그래밍에 있어 새로운 기술을 광범위하게 사용함
- 코딩 능력 가속화를 목표로 하며, 프로그래밍의 지루하고 지적으로 무의미한 부분에 대한 정신적 에너지 낭비를 방지하려 함
- LLMs는 의지와 능력이 있는 사람들에게 도움이 될 수 있지만, 이미 뒤처진 사람들에게는 큰 이점이 없을 수 있음
- 2024년 초, 이제 LLM은 소프트웨어 개발 과정을 간소화하고 효율성을 높이는 데 기여하고 있음.
"Omniscient or Parrots?"
- 인공지능 전문가들이 자신들의 지식이 제한적임을 인정하는 데 어려움을 겪고 있는 현상에 대한 우려.
- 신경망과 그 매개변수를 자동으로 최적화하는 알고리즘의 발명.
- 점점 더 큰 모델을 훈련할 수 있는 하드웨어 발전.
- 통계적 지식과 시행착오를 통해 효과적인 아키텍처 발견, 하지만 신경망은 여전히 불투명함.
- LLM의 일부 신흥 능력을 설명할 수 없는 상황에도 불구하고 과학자들의 과소평가.
"Stupid but All-Knowing"
- LLM은 기본적인 추론 능력만을 가짐, 종종 부정확하며, 비현실적인 사실에 대한 환상을 포함.
- 프로그래밍과 다른 분야에서 풍부한 지식을 가진 '어리석은 학자'로 비유됨.
- 프로그래밍 분야에서 LLM의 능력은 복잡성이 폭발적으로 증가한 현재 상황에서 소중함.
- 예시: Keras에서 PyTorch로 전환하는 과정에서 LLM의 도움을 받아 쉽게 파이썬 코드 작성.
"Time for Examples"
- 텐서 재구성을 위한 코드 작성 사례: PyTorch에서 구현된 신경망 모델과 배치에 대한 설명을 바탕으로, GPT-4가 텐서의 차원과 데이터 레이아웃을 변경하는 데 필요한 코드를 작성.
- BLE 클라이언트 구현 사례: Objective C를 사용하여 macOS 네이티브 API로 BLE 클라이언트를 구현. ChatGPT를 활용해 BLE API와 Objective C 프로그래밍을 다시 학습하고, 코드 작성 과정을 가속화.
- 컨볼루션 신경망 해석 사례: 문서화가 부족한 컨볼루션 신경망을 Python 스크립트로 구현. ChatGPT가 네트워크의 입력과 출력을 해석하고, 실제 이미지 테스트를 통해 네트워크의 기능을 파악하는 데 도움을 제공.
"Disposable Programs"
- 학습 과정의 손실 곡선 시각화: PyTorch 프로그램이 생성한 CSV 파일 형식을 GPT-4에 보여주고, 다양한 실험들의 검증 손실 곡선을 비교하는 프로그램을 요청. GPT-4가 생성한 결과물로, 30초 만에 완성.
- AirBnB CSV 보고서 분석 프로그램: 월별 및 연도별 아파트 그룹화, 청소 비용 및 예약당 밤 수를 고려한 평균 임대 가격 통계를 생성. GPT-4를 사용하여 첫 시도에 작동하는 프로그램 작성.
"When things don't go as they should: System Programming"
- 시스템 프로그래밍의 복잡성: 시스템 프로그래밍, 특히 C 언어 프로그래밍에서 LLM의 한계.
- LLM의 활용: 복잡한 추론이 필요한 경우 LLM은 종종 실패함. 이로 인해 시스템 프로그래밍에서는 주로 문서화 도구로 사용됨.
- 실험의 예시: 블룸 필터(Bloom filter)의 C 언어 구현 요구 사항 정의 및 작성. 해싱 함수의 중요한 측면에 중점을 둠. 구현은 100,000개의 요소를 저장할 수 있으며, 최대 5%의 거짓 긍정 확률을 가짐. 추가되는 요소는 널 종료 문자열임.
"Putting Things in Perspective"
- 현대 프로그래밍의 특성: 대부분의 현대 프로그래밍은 높은 수준의 추론을 요구하지 않고, 비슷한 형태의 반복 작업이 많음.
- LLM의 역할과 한계: LLM은 이러한 작업에 유용하지만, 문맥의 최대 크기에 의해 제한됨.
- 프로그래밍 직업의 미래 가치: LLM이 일부 작업을 수행할 수 있다면, 몇 년 안에 프로그래밍 직업의 가치에 대해 재고할 필요가 있음.
- LLM의 추론 능력: LLM이 일부 추론 능력을 가지고 있다고 볼 수 있음, 비록 그 모델이 약하고 불완전하더라도.
- LLM 활용의 중요성: LLM을 활용하는 능력은 중요하며, 문제를 명확하게 서술하는 능력은 AI 뿐만 아니라 인간과의 소통에서도 중요함.
- 문서화 도구로서의 LLM: Google 검색의 한계로 인해, LLM을 문서화 도구로 사용하는 것이 유용함.
Hacker News 의견
-
LLM의 코드 지원에 대한 활성화 효과
- LLM은 새로운 작업에 대한 활성화 에너지를 충분히 줄여서, 그렇지 않았다면 시도조차 하지 않았을 작업들을 실제로 완수하게 함.
- 인터넷과 오픈소스 운동이 비슷한 효과를 가져와, 관심 있는 프로젝트를 시도하지 않으면 다른 사람이 비슷한 문제를 해결하여 재사용하거나 재목적화할 수 있는 기회를 제공함.
- LLM 자체는 매우 유능하지 않지만, 기본 기술과 동기가 있는 사람들에게는 힘의 배가 효과를 제공함.
-
프로그래밍에서 LLM의 이점
- LLM을 사용하는 가장 좋은 시점은 주제에 대해 충분히 알고 있어서, 적어도 결과를 검증할 수 있고, 원하는 것을 상세하게 (이상적으로는 중요한 세부사항만) 설명할 수 있을 때임.
- LLM은 작업을 더 빠르게 하거나, 그렇지 않았으면 시도하지 않았을 작업을 하게 하거나, 일회성이지만 가치 있는 프로그램을 만드는 데 도움을 줌.
- 새로운 주제를 탐색하는 데도 매우 유용하며, 기본 용어를 이해하고, 구별되는 점을 듣고 이해하며, 주제에 대한 권위자가 누구인지 아는 것이 많은 분야로의 입문임.
-
LLM의 미평가된 측면
- LLM은 '모든 것을 아는 개발자' 역할을 할 수 있음.
- 아무리 숙련된 프로그래머라도 낯선 기술을 마주칠 때가 있으며, LLM은 이러한 상황에서 올바른 방향을 제시할 수 있음.
-
GPT-4를 이용한 버그 수정 경험
- GPT-4를 사용하여 이해하기 어려운 디컴파일된 코드를 깨끗한 버전으로 변환하여 오랫동안 문제를 일으킨 버그를 수정할 수 있었음.
-
코드 편집 툴 'aider' 소개
- 많은 사람들이 GPT와 로컬 파일 간에 코드를 오가며 작업하는 번거로운 워크플로우를 견디고 있음.
- 'aider'는 로컬 git 저장소를 GPT와 공유하여 새 코드와 편집 사항을 직접 파일에 적용하고, 프로젝트와 통합된 코드를 작성할 수 있게 함.
-
LLM의 한계 인식
- 매우 유능한 소프트웨어 엔지니어가 자신의 전문 분야에서 LLM이 무용하다고 느끼지만, 여전히 그것을 사용할 방법을 찾으려고 함.
- 협력을 통해 서로의 기술을 보완하고, 협력적인 노력이 부분의 합보다 더 클 수 있음.
-
새 프로젝트 시작의 임피던스 문제
- ChatGPT/LLM을 사용하면 프로젝트 시작 부분에 필요한 노력을 외부로 이전할 수 있음.
- LLM은 더 느리고 비효율적일 수 있지만, 시작하는 데 필요한 비용을 줄여줌으로써 프로젝트 중요 부분에 더 많은 지구력을 유지할 수 있음.
-
LLM에 대한 비판적 시각
- LLM이 훈련 세트 밖의 것을 얼마나 잘 처리하는지를 측정하는 수치적 증거가 필요함.
- LLM이 흥미로운 텍스트 작업을 할 수 있지만, 훈련 세트 내의 쿼리 부분을 어떻게 보장할 수 있을지에 대한 의문이 있음.
-
LLM을 사용한 지식 습득
- LLM을 사용하여 빠르게 지식을 얻고, LLM이 제공하는 정보가 터무니없는 것인지 확인할 수 있음.
- 프로그래밍은 정확성을 쉽게 검증할 수 있기 때문에 LLM에 특히 적합함.
-
LLM에 대한 회의적인 시각
- LLM이 매일 점점 더 많은 '잡지식'으로부터 사용자를 구해줌.
- Redis의 창시자가 '잡지식'에 대해 언급하는 것은 아이러니하며, 이는 프로그래밍에 대한 일종의 냉소적인 관점을 보여줌.