28 12월 2024

[ 一日30分 인생승리의 학습법] 고가용성(High Availability) 시스템을 위한 5가지 전략

[ 一日30分 인생승리의 학습법] 고가용성(High Availability) 시스템을 위한 5가지 전략

고가용성(High Availability) 시스템을 위한 5가지 전략

5가지 전략으로 마스터하는 MSA의 고가용성 실전 가이드

Introduction

고가용성, 보통 HA(High Availability)라고 많이들 부를 텐데요. 비즈니스가 잘 되기 시작하면서 대용량 트래픽을 뒷받침할 요소들을 넣다보면 가용성에 대한 고민이 깊어질 수밖에 없어집니다. 특히 마이크로서비스 아키텍처(MSA)를 설계할 때 많은 소프트웨어 엔지니어들이 고민하는 부분이 바로 이 고가용성인데요. 서비스 간의 느슨한 결합과 독립적인 배포라는 MSA의 장점을 살리면서도 시스템 전체의 안정성과 가용성을 확보하는 것이 쉽지 않은 과제이기 때문입니다. 이번에 소개해 드릴 글은 System Design Codex의 “5 Strategies for High-Availability Systems”라는 제목의 글로, 고가용성 시스템을 설계하는 데 도움이 될 만한 5가지 핵심 전략을 다루고 있습니다.


가용성(Availability)은 사용자 경험에 있어 매우 중요합니다. 매 분마다 비행기가 이륙하고 착륙하는 바쁜 공항을 운영하고 있다고 가정해봅시다. 우리가 가장 원하지 않는 것은 관제탑이 고장 나서 혼란과 지연이 일어나는 것일 겁니다.

이와 비슷하게, 24시간 온라인 서비스가 제공되는 시대에 고가용성은 일종의 성배와도 같게 되었습니다. 여러분이 주말에 친구 및 가족과 하이킹을 갈 때조차도 시스템은 항상 작동하고 운영되도록 보장해야 합니다.

그렇다면, 이를 어떻게 해야 할까요? 당연히 여러분은 휴가나 가족과의 시간을 망치고 싶지 않겠죠. 그러니 시스템의 고가용성을 확보하기 위한 몇 가지 전략을 적용해야 합니다.

아래에 소개한 5가지 중요한 전략을 살펴보겠습니다.

1. 로드 밸런싱(Load Balancing, LB)

다시 공항 예시로 돌아가보죠. 우리의 시스템이 바쁜 공항이고, 들어오는 리퀘스트가 착륙을 요청하는 비행기와 같다고 가정해 봅시다. 그런데 활주로가 단 2개밖에 없다면 어떨까요?

바로 이때 관제사가 해야 할 일은 비행기를 다른 활주로로 유도하고, 각 활주로의 부하를 관리하며, 혼잡을 야기하지 않으면서 교통량을 계속 처리하는 것일 겁니다.

로드 밸런서는 곧 애플리케이션의 항공교통관제사와 같습니다. 로드 밸런서는 CPU 사용률, 메모리 사용량, 응답 시간 등 여러 요소를 분석하여 요청을 가장 가용성이 높고 응답성이 좋은 서버로 라우팅합니다. 부하를 분산시킴으로써 단일 서버가 과부하되는 것을 방지하여 피크 부하 시에도 원활한 운영 흐름을 보장합니다.

01 image.png

2. 격리를 통한 데이터 복제(Data Redundancy with Isolation)

만약 특정 노선의 비행기에 문제가 생겨 운항할 수 없게 되면 어떻게 될까요? 탁월한 고객 서비스를 제공하는 효율적인 항공사를 운영하고 있다면, 승객들을 목적지까지 데려다 줄 예비 항공기를 갖추고 있을 것입니다.

애플리케이션의 데이터 복제도 마찬가지입니다. 여기서 데이터 복제(Redundancy, 혹은 Replication)란, 여러 데이터 센터나 클라우드 리전(region)에 걸쳐 데이터의 복사본을 여러 개 저장하는 것을 포함합니다.이렇게 하면 한 데이터 센터에서 장애나 중단이 발생하더라도 사용자는 다른 위치에서 데이터에 계속 엑세스할 수 있습니다.

데이터베이스 복제, 객체 스토리지, 분산 파일 시스템은 바로 데이터 복제를 구현하는 데 일반적으로 사용되는 기술입니다.

02 image.png

3. 장애 조치(Failover)

스카이다이빙을 하러 갔다고 해봅시다. 땅으로 떨어지는 와중에 등에 매달린 유일한 낙하산에 결함이 있다는 것을 깨달은 적이 있나요? (아마도 그렇지 않겠지만) 만약 그런 상황이라면 쉽게 펼칠 수 있는 보조 낙하산이 있기를 간절히 바랄 테죠. 시스템 설계의 맥락에서 장애 조치(Failover)는 그 낙하산과 같습니다.

장애 조치란 주요 구성 요소가 실패할 때, 시스템이나 서비스를 주요 구성 요소에서 대기 또는 백업 구성 요소로 자동 전환하는 것을 의미합니다. 이는 네트워크 트래픽을 백업 서버로 전송하거나, 보조 데이터베이스로 전환하거나, 사용자를 미러링된 애플리케이션 인스턴스로 리디렉션하는 것을 포함할 수 있습니다.

장애 조치 메커니즘은 일반적으로 로드 밸런서, 애플리케이션 서버 및 데이터베이스 관리 시스템에 내장되어 있어 사용자의 가동 중단 시간을 최소화하면서 신속한 전환을 보장합니다.

03.png

4. 오토 스케일링(Auto scailing)

고가용성 관점에서 오토 스케일링은 전투 시나리오의 요구 사항에 따라 추진력을 조정할 수 있는 강력한 전투기에 비유할 수 있습니다.

시스템 설계에서 이 전략은 현재 부하 및 사용 패턴에 따라 컴퓨팅 자원(가상 머신, 컨테이너 또는 서버리스 기능 등)을 동적으로 할당하거나 할당 해제하는 것을 뜻합니다.

오토 스케일링은 CPU 사용률, 메모리 사용량 또는 들어오는 요청 비율과 같은 메트릭에 의해 트리거될 수 있으며, 종종 클라우드 플랫폼 서비스 또는 맞춤형 스케일링 알고리즘을 사용하여 구현됩니다.

사용자 트래픽이 변동할 때, 오토 스케일링은 시스템이 부하를 처리하는 데 필요한 용량을 항상 확보해 성능 저하나 중단을 방지합니다.

04 image.png

5. Rate Limiting(호출 제한)

매우 바쁜 공항의 활주로가 15분마다 단 두 번의 착륙만 처리할 수 있다고 상상해 보세요. 더 많은 착륙을 시도하면 사고가 발생해 활주로를 완전히 망가뜨리게 될 것입니다. 승객의 생명을 위험에 빠뜨리는 것은 말할 것도 없죠. 이 경우 관제사는 15분마다 2대의 비행기만 착륙할 수 있도록 들어오는 비행기를 조정함으로써 호출 제한기(Rate Limiter) 역할도 합니다.

사용자 요청과 관련하여 애플리케이션에도 동일한 개념이 적용됩니다. 이 전략은 초당 또는 분당 고정된 수의 요청과 같이 주어진 시간 프레임 내에서 사용자 또는 시스템이 요청할 수 있는 수에 제한을 두는 것을 포함합니다.

호출 제한은 로드 밸런서, 웹 서버 또는 애플리케이션 수준과 같은 다양한 계층에서 구현될 수 있습니다. 단일 사용자 또는 시스템이 모든 리소스를 사용하는 것을 방지함으로써 호출 제한은 모든 사용자에게 공정하고 안정적인 서비스를 보장하고 갑작스러운 트래픽 급증으로 인해 시스템이 과부하되는 것을 방지합니다.

05 image.png

자, 여러분들은 애플리케이션의 가용성을 향상시키기 위해 다른 어떤 전략을 사용해 보셨나요? 댓글을 남겨주세요 🙂

Top 1% 개발자로 거듭나는 확실한 처방전, 데브필이었습니다.

06 woonys__youtube_profile_image_the_channel_name_is_DevPill_softw_a07a80be-3468-4941-a672-9146f0f59b5b.png
 [출처] https://maily.so/devpill/posts/8do7x52ezgq

Loading

14 12월 2024

[chatGPT] ChatGPT를 활용한 데이터베이스 설계 및 데이터분석 쿼리 실습 사례 – eCommerce 플랫폼을 위한 데이터 베이스 설계

[chatGPT] ChatGPT를 활용한 데이터베이스 설계 및 데이터분석 쿼리 실습 사례 – eCommerce 플랫폼을 위한 데이터 베이스 설계

오늘은 ChatGPT를 데이터베이스 설계 및 데이터 분석 쿼리를 만드데 사용하는 방법을 정리한 첫번째 내용으로 이 글에서는 ChatGPT를 활용하여 eCommerce 플랫폼을 위한 데이터베이스 설계 및 데이터 분석 쿼리를 만드는 방법에 대해 알아보겠습니다.

1. 요구사항 분석

eCommerce 플랫폼 개발을 위해 가장 먼저 필요한 작업은 데이터베이스 설계를 위한 요구 사항을 파악 하는 일입니다. 실제 요구사항 분석 단계는 고객사의 니즈를 파악하고 사용자 시나리오 분서, 성능, 확장성 등 다양한 조사와 작업들이 필요하지만 오늘은 ChatGPT를 통해 일반적인 요구 사항을 확인해보겠습니다. ChatGPT에게 먼저 eCommerce 플랫폼 개발을 위한 데이터베이스 설계를 위한 요구 사항을 확인해봅니다.

ChatGPT프롬프트
eCommerce 플랫폼 개발을 위한 DB 설계 요구 사항을 정리 해줘
 

01. pic1-507426aed497b8dfbc1fdc3e7e3e9d17.png

2. 데이터베이스 설계 및 테이블 생성

1) 설계

위에서 요구사항을 파악 한 것 처럼 eCommerce 플랫폼을 위한 데이터베이스는 사용자 정보, 제품 정보, 주문 정보, 결제 정보, 배송 정보, 리뷰 및 평점, 장바구니 정보 등을 관리해야 합니다. 이러한 정보를 관리하기 위해 다음과 같은 테이블을 생성할 수 있습니다:

  • Users
  • Products
  • Orders
  • OrderDetails
  • Payments
  • Shipping
  • Reviews
  • Cart
ChatGPT프롬프트
eCommerce 플랫폼 개발을 위한 DB table 들을 정리 해줘
 

02. pic2-eb33c323f111cbcd32f9fef80f6c19b9.png

2) ERD 작성

이러한 테이블 간의 관계는 ERD(Entity Relationship Diagram)를 통해 시각화할 수 있습니다. ERD는 데이터베이스 테이블 간의 관계를 보여주는 도구로, 데이터베이스 설계 과정에서 중요한 역할을 합니다. eCommerce의 테이블 간의 관계를 파악하기 위한 ERD를 그려보고 위의 테이블들을 만들고 ERD

ChatGPT프롬프트
위의 테이블 목록을 기반으로 데이터베이스 ERD를 그려줘
 

03 ecommerce-database-design-pic3-fbb9e60ae5f87c499817afb5ae11e829.png

참고로 ERD를 그리기 위해서는 Show Me 라는 ChatGPT 플러그인을 설치 하셔야 합니다.

3. 데이터베이스 쿼리 작성

먼저 ChatGPT로 위의 요구사항 분석 및 ERD 작성을 통해 도출된 데이터베이스 테이블을 만들기 위한 쿼리를 만들어봅니다.

1) 테이블 생성 쿼리

ChatGPT프롬프트
위의 테이블 생성을 위한 mysql 쿼리를 작성해줘
 

04 pic4-01fa31d2245a2d52607f9d9a2ed26a8c.png

2) 주요 동작(Operation) 쿼리

테이블 생성 후에는 MySQL 쿼리를 사용하여 데이터를 관리할 수 있습니다. 사용자 생성, 제품 조회, 주문 업데이트, 결제 정보 조회, 배송 정보 생성, 리뷰 작성, 장바구니에 제품 추가, 장바구니에서 제품 삭제, 장바구니 조회 등의 작업을 수행하는 데 필요한 기본적인 쿼리를 작성할 수 있습니다.

먼저 ChatGPTfh 주요 동작(Operation)들을 정리해봅니다.

ChatGPT프롬프트
주요 operation 들을 정리 해줘
 

05 pic5-1550d712be796c2c2e36e04db78f37fe.png

ChatGPT프롬프트
위에서 정리해준 주요 동작(Operation)을 위한 mysql 쿼리를 정리 해줘
 

06 pic6-cfd31c44115bf9de63912dcddf754934.png

3) 주요 동작(Operation) 상태 관리 및 상태 다이어그램

주문 관리, 결제 관리, 배송 관리의 경우 상태관리가 중요한 테이블 들이라 상태 관리를 위한 상태 들을 정의 해달라고 요청 합니다.

ChatGPT프롬프트
주문 관리, 결제 관리, 배송 관리 상태 관리를 위한 상태 들을 정리 해줘

 

07 pic6-2-5c42375d749bbe2525e1488c2ab23939.png

ChatGPT가 정리 해준 상태 정의를 기반으로 상태 다이어그램을 작성 해달라고 요청 합니다.

ChatGPT프롬프트
주문 관리, 결제 관리, 배송 관리 상태 관리를 위한 상태 다이어그램을 각각 작성 해줘
 

08 pic6-3-609a499d7619136652de7fead7a8f826.png

 09 pic6-4-efe54c273ec3c276e47d07d59eac61ca.png

 10 pic6-5-7c1b3479c3e01e45b3bfa8e27bab48fc.png

마지막으로 ChatGPT에게 주문 관리, 결제 관리, 배송 관리 상태 관리 업데이트를 위한 쿼리문들을 작성해 달라고 요청 합니다.

ChatGPT프롬프트
주문 관리, 결제 관리, 배송 관리 상태 관리 업데이트를 위한 쿼리문들을 작성해줘
 

11 pic6-6-13d838497016de194cfc0c113ee543af.png

이상으로 기본적인 테이블 생성 및 기본 동작 및 주요 테이블들의 상태 관리를 위한 쿼리 까지 작성 해볼 수 있었습니다. 다음으로는 월별 고객 데이터 분석과 판매 실적 분석 등 데이터 분석을 위한 쿼리를 만들어보겠습니다.

3. 데이터 분석 쿼리 만들기

데이터베이스가 준비 되고나면, 데이터 분석을 위한 쿼리를 작성할 수 있습니다. 월별 신규 고객 수, 월별 총 판매량, 월별 총 판매액, 월별 베스트셀러 상품 등의 정보를 얻는 데 도움이 되는 쿼리를 작성할 수 있습니다.

ChatGPT프롬프트
월별 고객 데이터 분석과 판매 실적 분석을 위한 쿼리들을 정리 해줘
 

12 pic7-193a47b09819c4f235bc900dcd361f8c.png

월별 고객 데이터 분석과 판매 실적 분석을 위한 쿼리는 다음과 같습니다:

월별 신규 고객 수(New Customers per Month):

SELECT DATE_FORMAT(creation_date, '%Y-%m') AS month, COUNT(*) AS new_customers
FROM Users
GROUP BY month;
 

이 쿼리는 각 월별로 신규 가입한 고객 수를 계산합니다. 여기서 creation_date는 사용자가 계정을 생성한 날짜를 나타내는 필드입니다.

월별 총 판매량(Total Sales per Month):

SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, COUNT(*) AS total_sales
FROM Orders
WHERE payment_status = 'Completed'
GROUP BY month;
 

이 쿼리는 각 월별로 완료된 주문의 총 수를 계산합니다. 여기서 order_date는 주문이 생성된 날짜를 나타내는 필드입니다.

월별 총 판매액(Total Sales Amount per Month):

SELECT DATE_FORMAT(Orders.order_date, '%Y-%m') AS month, SUM(OrderDetails.quantity * Products.price) AS total_sales_amount
FROM Orders
JOIN OrderDetails ON Orders.order_id = OrderDetails.order_id
JOIN Products ON OrderDetails.product_id = Products.product_id
WHERE Orders.payment_status = 'Completed'
GROUP BY month;
 

이 쿼리는 각 월별로 판매된 제품의 총액을 계산합니다.

월별 베스트셀러 상품(Bestselling Products per Month):

SELECT DATE_FORMAT(Orders.order_date, '%Y-%m') AS month, Products.product_name, SUM(OrderDetails.quantity) AS quantity_sold
FROM Orders
JOIN OrderDetails ON Orders.order_id = OrderDetails.order_id
JOIN Products ON OrderDetails.product_id = Products.product_id
WHERE Orders.payment_status = 'Completed'
GROUP BY month, Products.product_name
ORDER BY quantity_sold DESC;
 

이 쿼리는 각 월별로 가장 많이 판매된 제품을 찾습니다.

이러한 쿼리는 월별 고객 데이터와 판매 실적을 분석하는 데 도움이 됩니다. 실제 구현시에는 비즈니스 요구 사항에 따라 쿼리가 달라질 수 있습니다.

7. 마치며

eCommerce 플랫폼 개발은 복잡한 과정이고 데이터베이스 설계 및 상태 관리에도 많은 고민이 필요하지만, ChatGPT를 활용해서 데이터베이스 설계 및 데이터 분석 쿼리 작성 과정을 쉽게 관리할 수 있었습니다. 이 글을 통해 eCommerce 플랫폼을 위한 데이터베이스 설계 및 데이터 분석 쿼리 작성에 대한 기본적인 이해 뿐만 아니라 원하는 시스템을 디자인하고 개발 하는데 도움이 되셨으면 좋겠습니다.

[출처] https://www.developerfastlane.com/docs/backend-database/ecommerce-platform-database-design

Loading

3 12월 2024

[교직훈련/교수법] IT 개발자에서 결국, 인생2막 “교육자”로 변신 中

[교직훈련/교수법] IT 개발자에서 결국, 인생2막 “교육자”로 변신 中

27년 넘게 개발자로 일하며 다양한 프로젝트를 경험했는데요, 이제는 제가 가진 경험과 노하우를 다른 분들과 나누고 싶어서 새로운 도전을 시작했습니다. 최근 “국가 직업능력 훈련 교사” 자격증을 취득하고, 직업훈련교사로의 전환을 준비 중입니다.

앞으로는 실무에서 쌓은 이야기를 바탕으로, 필요한 기술과 지식을 전달하며 함께 성장할 수 있는 교육자가 되고 싶습니다.

직업능력개발훈련교사 자격증(web용_blur처리).png

Loading

22 11월 2024

[교수법][PBL 수업] [태재미래교육포럼] 사라지는 것과 생겨나는 것 – AI를 이용한 학습자 중심의 PBL 사례 실습 (원종윤 동명대학교 시각디자인학과 교수)

[교수법][PBL 수업] [태재미래교육포럼] 사라지는 것과 생겨나는 것 – AI를 이용한 학습자 중심의 PBL 사례 실습 (원종윤 동명대학교 시각디자인학과 교수)

요약: “[태재미래교육포럼] 사라지는 것과 생겨나는 것 – AI를 이용한 학습자 중심의 PBL 사례 실습 (원종윤 동명대학교 시각디자인학과 교수)”

  1. AI를 활용한 교수법 개발
    • 2020년 코로나 시기 고립된 환경 속에서 메타버스와 AI 협업 도구를 활용한 교육법 개발.
    • AI 활용 사례: 이미지 생성, 메타버스 전공 연계, 게임 엔진 및 버추얼 휴먼 교육 등.
  2. AI와 창작 도구의 발전
    • 2022년 달리(DALL·E), 미드저니(MidJourney) 등의 이미지 생성 도구 조기 활용 경험.
    • 생성형 AI를 활용한 예술가 및 디자이너의 변화와 적응 사례.
  3. 교육 현장에서의 AI 활용
    • AI 도구를 활용한 PBL(프로젝트 기반 학습)의 투트랙 전략:
      • 초보자를 위한 프로젝트 제공.
      • 실제 문제 해결을 위한 고급 프로젝트 진행.
    • 중학교, 고등학교 교사 대상 AI 활용 교육 및 수업 계획 개발.
  4. AI의 창작 지원 및 한계
    • AI 도구를 활용한 예술 및 창작 지원 사례와 제한점:
      • 예: 어린이의 상상을 AI를 활용해 동화책 제작.
      • 저작권 문제와 표절 가능성에 대한 고찰.
  5. AI의 사회적 영향과 문제 해결
    • 생성형 AI로 인한 초상권, 저작권, 윤리적 문제들.
    • PBL 수업을 통한 문제 정의 및 해결 방안 도출.
    • AI 도구의 정확성과 신뢰성 확보를 위한 교육의 중요성.
  6. AI 기술과 직업의 변화
    • AI 활용 능력이 채용의 중요한 기준으로 부상.
    • AI 도입으로 인해 사라지는 직업과 새롭게 생겨나는 직업에 대한 전망.
  7. 저작권 및 윤리적 고려
    • AI 생성물의 저작권 부재와 인간 창작자의 기여도 기록 필요.
    • 교육 및 창작 환경에서 저작권 문제와 가이드라인 개발 사례.
  8. 학생과 교사 대상 AI 교육 사례
    • 다양한 연령과 수준에 맞춘 PBL 프로젝트 개발.
    • AI 도구를 활용한 수업 설계 및 팀 프로젝트 결과물 제작.
  9. 미래 AI 활용 방향성
    • AI 활용 경험을 통해 기술 발전의 가능성과 사회적 영향을 긍정적으로 수용.
    • 교육 및 창작 현장에서 AI의 도구적 역할과 문제 해결 능력 강조.
  10. 강의 결론 및 제언
    • AI 도구를 활용한 PBL은 미래 교육과 창작에 중요한 역할을 할 것.
    • 교사와 학생 모두 새로운 기술을 체험하고 문제를 해결하며 발전해야 함.

Loading

19 11월 2024

[알아봅시다] 게임의 순기능…직장생활에 필요한 ‘스킬’ 길러준다

[알아봅시다] 게임의 순기능…직장생활에 필요한 ‘스킬’ 길러준다

게임의 순기능…직장생활에 필요한 ‘스킬’ 길러준다

입력
컴퓨터 게임을 즐기는 사람들. 게티이미지뱅크

컴퓨터 게임을 즐기는 사람들. 게티이미지뱅크

청소년에게 중독을 비롯한 악영향을 미치는 것으로 알려진 온라인 게임이 성인에게는 직장 생활에서 바람직한 마음가짐을 갖는 데 도움이 된다는 연구결과가 나왔다.

멜리카 시르모하마디 미국 휴스턴대 교수 연구팀은 온라인 게임을 취미로 즐기는 사람들이 직장에서 부여되는 업무를 ‘해결 가능한 퍼즐’로 여기며 적극적으로 도전하고 조직생활을 하는 데 팀워크, 리더십, 자신감과 같은 긍정적인 정서가 발달했다는 연구결과를 국제학술지 ‘국제 인적자원 개발’에 18일(현지시간) 발표했다.

연구팀은 평균 20년 동안 비디오 게임을 즐기고 최소 10년 이상 대규모 다중사용자 온라인 역할 게임(MMORPG)을 취미로 삼은 성인 직장인 23명을 대상으로 설문조사를 실시했다. 게임이 직장생활에 미치는 영향을 효과적으로 확인하기 위해 온라인 게임 이용자의 경우 해당 게임 랭킹 상위 1%에 속하는 참가자들을 모집했다.

참가자들이 종사하는 직업 분야는 회계, 인사와 행정지원, 프로젝트 관리, 엔지니어링, 재무, 교육 등 다양했다. 연령대는 20~41세였으며 평균 연령은 29세였다. 남성 19명과 여성 4명이 참여했다.

참가자들이 직장 생활을 하는 과정에서 어떤 정서적 특성을 갖고 있는지 확인하기 위해 연구팀은 심층 인터뷰를 실시했다. 참가자들이 음성으로 답변한 내용을 줄글로 바꾸어 어떤 단어나 표현을 자주 사용했는지와 전체적인 내용을 자세히 분석했다.

연구팀은 정량적 데이터보다 개인의 주관적인 답변을 깊게 분석하는 이같은 방식은 사회적 상호작용에 대한 이해를 얻는 데 유리한 연구 방법론인 질적 해석주의 접근법이라고 설명했다.

인터뷰 질문은 참가자들이 자신의 경험을 해석하는 방식, 자신의 가치관을 구성하는 방식 등을 알아보기 위한 문항들로 구성됐다.

분석 결과 참가자들은 직장에서 수행해야 하는 업무를 해결 가능한 퍼즐이라 여겼다. 엔지니어로 일하는 한 참가자는 “퍼즐을 보면 풀고 싶다는 동기가 생긴다. 업무도 퍼즐이라 생각하면 해결 가능한 일이라고 생각하게 되곤 한다”고 말했다. 업무 목표를 달성하기 위해 진취적인 자세를 가지게 된다는 답변이다.

다른 참가자들은 온라인 게임에서의 성공 경험을 통해 자신감을 키울 수 있었다고 말했다. 또 자신이 게임 상에서 선보인 기술과 팀원들과 함께 게임을 한 방식에 대한 피드백을 받으면서 자기 인식이 발달했다고 보고했다.

연구팀은 “성과 평가, 피드백 제공, 지시하기, 다른 사람에게 영감을 주기 등의 능력은 게이머가 게임을 하면서 함양할 수 있는 능력”이라고 말했다.

연구를 이끈 시르모함마디 교수는 “이번 연구는 그간 연구되지 않았던 취미로서의 게임이 업무에 어떻게 도움이 될 수 있는가를 보여줬다”며 “게임은 실제로 사람들이 직장 업무를 수행하는 데 중요한 ‘스킬(기술)’을 개발하는 데 도움이 된다”고 말했다.

<참고 자료>
– doi.org/10.1080/13678868.2024.2404818

기자 프로필

[출처] https://n.news.naver.com/article/584/0000029635?cds=news_media_pc 

Loading

15 11월 2024

[암호화폐] Solana 토큰 만들기 — MeMe Coin

[암호화폐] Solana 토큰 만들기 — MeMe Coin

Solana 토큰 만들기 — MeMe Coin

Jay Lee

 
 

나도 solana로 밈코인 만들 수 있을까?

솔라나에 밈코인을 발행해보자.

프로젝트 개요

참조

Solana 문서

Metaplex 문서

개발환경

  1. Node.js
  2. Solana tool suite
  3. Metaplex
  4. Phantom

준비

필자는 맥 터미널로 진행합니다.

최신 solana cli를 설치합니다.

[참조: https://docs.solanalabs.com/cli/install]

sh -c "$(curl -sSfL https://release.solana.com/v1.18.4/install)"

현재 필자의 환경

workspace % node -v                                
v20.8.0
workspace % npm -v
10.1.0
workspace % yarn -v
1.22.19
workspace % ts-node -v
v10.9.2
workspace % solana --version                                                
solana-cli 1.18.4 (src:356c6a38; feat:3352961542, client:SolanaLabs)

~/workspace 에서 진행합니다.

일단, 작업 디렉토리를 생성해요.

workspace % mkdir meme
workspace % cd meme
meme %

밈코인을 만들려면 두가지 리소스가 필요합니다.

  1. 토큰 이미지 파일
  2. 메터데이터 json 파일

토큰 이미지는 ai 이미지 생성기에서 돌려 얻어보겠습니다.

푸른 바다, 푸른 하늘의 독도를 그려달라고 해봤어요.

자! 이제, 이미지를 https://nft.storage/에 올립니다. ipfs를 사용하는 off-chain 분산 스토리지를 제공하는 무료 서비스입니다.

올라가면, 주소*(View URL)를 볼 수 있어요.

https://bafybeif2gqc72oeefebn77kp4iomrgshfevzxnuyre6eqnu7xara7anlgm.ipfs.nftstorage.link/

제 경우는 위와 같이 나왔어요.

JSON 파일을 준비해 봅시다. 저는 아래와 같이 만들고

{
  "name": "Dokdo Coin",
  "symbol": "DOK",
  "description": "Dokdo Coin",
  "image": "https://bafybeif2gqc72oeefebn77kp4iomrgshfevzxnuyre6eqnu7xara7anlgm.ipfs.nftstorage.link"
}

다시, https://nft.storage/ 에 올렸습니다.

https://bafkreico2rt2pdqy57nakinjq4egzyj63w4mu5hixun32nvnim6dzphzmm.ipfs.nftstorage.link/

이제, 위에 주소를 가지고, 토큰을 만들어 보겠습니다.

일단, 두개의 지갑(계좌, Keypair?)이 필요합니다.

  1. 발행인의 지갑(발행비 결제 및 토큰 소유주)
  2. 밈코인 자체의 주소가될 Keypair

이왕이면 의미있는 주소였으면 좋겠습니다. 그래서 아래와 같이 만들겠습니다.

# east로 시작하는 주소 생성
workspace % solana-keygen grind --starts-with east:1
# Dokdo로 시작하는 주소 생성
workspace % solana-keygen grind --starts-with Dokdo:1

필자는 아래의 두개의 지갑 파일이 나왔습니다.
eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4.json

리소스 준비가 끝났으니, 시작해보겠습니다.

mint.ts라는 파일을 만들겠습니다.

import { percentAmount, generateSigner, signerIdentity, createSignerFromKeypair } from '@metaplex-foundation/umi'
import { TokenStandard, createAndMint } from '@metaplex-foundation/mpl-token-metadata'
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
import { mplCandyMachine } from "@metaplex-foundation/mpl-candy-machine";
import  "@solana/web3.js";
import secret from './eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json';
import dokdo from './DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4.json';

const umi = createUmi('https://api.devnet.solana.com/'); //원하는 endpoint로 변경, 데브넷, 테스트넷, 메인넷
const userWallet = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(secret));
const userWalletSigner = createSignerFromKeypair(umi, userWallet);
const mintKeypair = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(dokdo));
const mintSigner = createSignerFromKeypair(umi, mintKeypair);

const metadata = {
    name: "Dokdo Coin",
    symbol: "DOK",
    uri: "https://bafkreico2rt2pdqy57nakinjq4egzyj63w4mu5hixun32nvnim6dzphzmm.ipfs.nftstorage.link",
};

const mint = mintSigner;// generateSigner(umi);
umi.use(signerIdentity(userWalletSigner));
umi.use(mplCandyMachine())

createAndMint(umi, {
    mint,
    authority: umi.identity,
    name: metadata.name,
    symbol: metadata.symbol,
    uri: metadata.uri,
    sellerFeeBasisPoints: percentAmount(0),
    decimals: 8,
    amount: 51751000_000_00000000,
    tokenOwner: userWallet.publicKey,
    tokenStandard: TokenStandard.Fungible,
    }).sendAndConfirm(umi).then(() => {
    console.log("Successfully minted 1 million tokens (", mint.publicKey, ")");
});

일단, 환경을 확인해보겠습니다.

meme % solana config get
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.testnet.solana.com 
WebSocket URL: wss://api.testnet.solana.com/ (computed)
Keypair Path: /Users/kjaylee/workspace/solana.keys/DTPRZ8VZtcjmb9vxB8VRqsX7QKEp69ASgwHrWTtv7s38.json 
Commitment: confirmed

testnet으로 되어 있군요. 제가 주로 쓰는 Keypair(지갑)이 등록되어 있고요.

이 두개를 바꾸겠습니다. devnet으로 해보죠.

[참조: https://solana.com/docs/core/clusters]

meme % solana config set --url https://api.devnet.solana.com
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com 
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/kjaylee/workspace/solana.keys/DTPRZ8VZtcjmb9vxB8VRqsX7QKEp69ASgwHrWTtv7s38.json 
Commitment: confirmed

meme % solana config set --keypair ./eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json 
Config File: /Users/kjaylee/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com 
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: ./eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE.json 
Commitment: confirmed

airdrop부터 하나 받고 하겠습니다.

당연하게도, 돈이 있어야 돈이 발행됩니다.

meme % solana airdrop 1
Requesting airdrop of 1 SOL

Signature: 5ciDBVVhJyi1HqsLZbST9FfMbWvQsLvSikXzFrsRXNfXNY7hrwKkdw8toB4gaKqDyU4NyCjdh8j1CW3pQGtJkTeU

1 SOL

meme % solana account eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE     

Public Key: eastQhAYNCtxPGhG6YWifPWo1P3FVsSaH97vUSmDHjE
Balance: 1 SOL
Owner: 11111111111111111111111111111111
Executable: false
Rent Epoch: 18446744073709551615

잘 들어온게 확인이 되죠? 아래, 소수점 표현 8과, amount는 정하시면 됩니다. (대한민국 1인당 1000개?)

...
decimals: 8,
amount: 51751000_000_00000000,
...

이제, 필요한 초기화를 하겠습니다.

meme % yarn init --yes
yarn init v1.22.19
warning The yes flag has been set. This will automatically answer yes to all questions, which may have security implications.
success Saved package.json
✨  Done in 0.03s.

meme % tsc --init

Created a new tsconfig.json with:                                                                                       
                                                                                                                     TS 
  target: es2016
  module: commonjs
  strict: true
  esModuleInterop: true
  skipLibCheck: true
  forceConsistentCasingInFileNames: true


You can learn more at https://aka.ms/tsconfig

tsconfig.json 파일을 열어서, 아래 줄을 찾아 주석을 제거해서 활성화해주세요.

"resolveJsonModule": true

필요한 라이브러리 설치

meme % yarn add @solana/web3.js @metaplex-foundation/umi @metaplex-foundation/mpl-token-metadata @metaplex-foundation/umi-bundle-defaults @metaplex-foundation/mpl-candy-machine bs58

밈코인 생성!!

meme % ts-node mint.ts                                             
Successfully minted 1 million tokens ( DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4 )

https://explorer.solana.com/address/DokdodChquwPecMeimj7jPGncNHXoHHFdoCEKav5KAp4?cluster=devnet

짜잔@@~

[출처] https://pipln.medium.com/solana-%ED%86%A0%ED%81%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-meme-coin-468565705cb4

Loading

14 11월 2024

[알아봅시다] “일상에 스며든 AI”…2025년 주목할 ICT 10대 이슈

[알아봅시다] “일상에 스며든 AI”…2025년 주목할 ICT 10대 이슈

“일상에 스며든 AI”…2025년 주목할 ICT 10대 이슈

입력
IITP, 10대 ICT이슈 선정…’AI’ 전산업으로 확산, 혁신 가속“AI가 모든 기술에 연관성을 가지고 진흥과 혁신을 계속하고 있다. 올해는 AI가 실현 가능하다는 것을 증명한 한 해라면, 내년은 AI가 우리의 생활에 범용 기술로 자리 잡으면서, 혁신과 경쟁이 더욱 빠르게 진행되는 해가 될 것이다”

임진국 정보통신기획평가원(IITP) 디지털미래정책단장은 14일 서울 양재동 엘타워에서 열린 2025 ICT 산업전망 컨퍼런스에서 내년에 주목해야 할 ICT 분야 주요 10대 이슈를 꼽은 뒤 이같이 말했다.

이날 IITP는 2025년 주목해야 할 10대 ICT 이슈로 인공지능(AI), AI반도체, AI데이터, 양자기술, 네트워크, 사이버보안, 미디어, 휴머노이드, AI사이언티스트, 안전안보 등의 키워드를 제시했다.

2025 ICT 10대 전망

AI, AI에이전트의 시대로

AI 대혁명 시대가 열리면서 일반인공지능(AGI)을 향한 진화가 더욱 가속되고 있다. 일론 머스크는 2~3년 내, 샘 올트먼은 수천일 내 AGI 시대가 열릴 것으로 전망했다. 단 실효성, 효율성의 이슈도 계속 부상될 것으로 예측된다.

IITP는 내년부터 AI의 에이전트 시대가 본격 열릴 것으로 전망한다. 스스로 계획을 하고 행동을 하고 학습하는 AI가 등장할 것이라는 설명이다. 미팅, 캘린더, 메일, 메신저, 검색, RPA, 챗봇 등을 모두 AI 에이전트가 해결해줄 것이라는 기대가 나온다.

임진국 단장은 “AI 혁신이 우리 일상과 경제 사회적인 영향력을 가속화시킬 것”이라며 “우리 일상 일하는 방식의 변화의 계기점이 될 것이라고 생각한다”고 말했다.

또한 오픈소스 AI가 AI 혁신 경쟁을 가속화 시키지만, 빅테크 중심의 AI 진입장벽이 낮아지는 계기가 될 것이라고 설명했다.

AI 반도체, 초격차 전장의 전면 확장

빅테크의 자체칩 개발이 증가하고 HBM 수요가 폭발하면서 AI 반도체 비중은 더욱 늘어나고 있다. 이에 내년은 AI 반도체를 두고 미국과 중국이 초격차로 겨루는 한 해가 될 것으로 예상된다. 한국도 이런 흐름에 합류해 ‘AI-반도체 이니셔티브’를 맺은 상황이다.

IITP는 NPU 시장이 본격 개화되는 시기가 될 것이라고 주목했다. GPU가 성장하면서 공급적체, 전력소모, 물 과다 사용 등으로 언제까지 갈것이냐 하는 우려가 존대. 이에 NPU를 다시 주목하게 될 것이고, 시스템SW과 만나 NPU 시장이 확산 될 것이라는 예측이다.

여전히 해결되지 않는 반도체의 메모리 방목 문제, 전력 소모 문제 등도 극복해야 할 한계점이다. 이러한 한계점이 차세대 반도체 시장의 새로운 기회를 열것이라고 전망했다.

AI 데이터, ‘BIG’ 데이터보다 ‘FINE’ 데이터로

AI가 등장한 초기는 파라미터의 크기가 성능을 좌우 했지만 최근에는 무조건 그렇지 않다는 결과가 나오고 있는 상황이다. 이에 2026년도 부터 학습데이터의 고갈이 시작될 것이라는 전망이 나온다. AI 시장은 데이터를 기반으로 성장하는데, 데이터 자체가 고갈되면 정체는 불가피 하다.

이를 극복하기 위해 AI 합성 데이터가 주목받고 있다. 양질의 데이터가 절대적으로 필요한 시기가 오고 있는 것. 그러나 환각 등으로 모델이 붕괴될 위험도도 존재한다.

이에 내년은 다시 고품질의 데이터에 주목하는 한해가 될 것으로 보인다. AI 성능 경쟁 이전에 데이터 확보 경쟁이 본격화 될 것이라는 설명이다.

나아가 AI 학습 방법도 변화될 것으로 관측된다. 방대한 데이터를 바탕으로 사전 및 사후 학습이 직중됐지만 이제는 추론 학습이라는 새로운 과정이 더 해진다는 것. 사람처럼 반복적으로 생각하도록 하게 하면서 성능도 10배 정도 향상됐다는 결과도 나오고 있다. 갈수록 소량 데이터의 학습이 더욱 주목을 받게된다.

양자기술…퀀텀, 과학에서 산업으로

100년 동안 이어온 양자 기술도 떠올랐다. 연구실을 넘어 산업으로 도약하기 시작한 것이다. 양자 암호통신, 양자 네트워크, 양자센서 등이 절차를 거치며 본격 상용화를 앞두고 있다. 앞으로 양자 기술은 우리의 일상에 가까워질 예정이다. 단 고비용, 대형사이즈, 낮은 양상 효율 등의 단점이 극복해야 한다.

IITP는 퀀텀과 AI가 결합해 디지털 미래를 대비하는 시기인 점을 주목했다. 두 기술이 합쳐져 초저전력, 막강한 병렬연산, 빠른 데이터 처리, 높은 보안성 등의 시너지가 발휘된다. 이에 세계 각국이 양자기술을 육성하면서 보호 하고자 하는 시대가 오고 있으므로, 우리나라도 세계의 흐름에 합류해야 한다고 제언했다.

지능화가 주도하는 차세대 네트워크

최근 AI 서비스가 확산되면서 데이터 트래픽 폭증, AI 서비스 트래픽 비중 증가 등의 네트워트의 당면과제들이 떠오르고 있다.

IITP는 SW를 넘어 AI 중심의 네트워크로 혁신하는 점을 주목했다. 네트워크 SW중심이 AI를 만나, 네트워크 지능화 AI RAN을 구성할 것이라는 것. 이에 내년은 네트워크의 AI 지능화를 통해서 AI 로봇, 의료와 같은 고차원의 AI 서비스가 점차 빠르게 전개될 것으로 전망된다.

또한 이러한 네트워크 지능화는 통신시장의 경쟁 구도에서도 변화를 야기시킬 것으로 예상된다. 나아가 6G 주도권 경쟁에서도 이러한 지능화는 필수라고 꼽았다.

AI 창, AI 방패 등 사이버 보안 급부상

사이버 공격도 AI와 만나 양적, 질적으로 진화하고 있다. 사이버 위협 건수가 늘어나고, 피해규모도 커지면서 사이버위협이 양적으로 확대되고 있는 상황이다.

내년에는 사이버 보안이 다시 주목받을 예정이다. AI 공격을 AI 보안으로 막는 방식이 증가할 것이라는 설명이다. 개인, 기업 뿐만 아니라 국가 차원에서 사이버 보안의 중요성을 확인하는 한 해가 될것으로 관측된다.

IITP는 안전한 데이터를 바탕으로 마이데이터가 통신, 의료, 금융, 유통 등 전분야로 확대될 것이라고 예측했다. 데이터의 안전이 보호받으면서 활용되는 균형이 잡힐 것으로 본 것이다.

미디어콘텐츠의 창의혁명, AI영상과 공간 컴퓨팅

과거 화가, 사진작가, 만화가 등을 대체하기 힘들 것으로 관측됐으나 생성형 AI가 등장하면서 뒤집혀졌다. IITP는 AI 기반의 영상 제작이 빨라지면서 미디어 콘텐츠 제작환경에서 거대한 변화가 일어날 것이라고 전망했다.

AI 미디어콘텐츠와 AI 에이전트가 만나 새로운 나비효과가 탄생한다는 것이다. 디지털트윈, AI, XR, 네트워크, 블록체인 등이 만나 공간컴퓨팅을 불러올 것으로 기대한다.

디지털과 현실세계 연결의 중심에 선 휴머노이드

휴머노이드는 인류의 삶으로 성큼 다가왔다. 물류, 제조 영역에서는 이미 휴머노이드를 활용하고 있다. 휴머노이드 출하량은 갈수록 늘고 있다. 최근 대량 생산이 가능해지면서 본격적인 휴머노이드 시대가 열린 상황이다.

IITP는 내년 SDR(SW Defined Robot)이 범용 휴머노이드 시대를 열것으로 전망했다. SDR, 소프트웨어, 디파인드 로봇 등이 휴먼와이드 시대를 열어가는 핵심으로 자리매김 할 것이라는 설명이다.

SDR은 어떤 특정 규모 세대가 한 분야만의 일을 잘하는 게 아니라, 다양한 분야에 다목적으로 활용할 수 있는 모형 로봇 시대로의 전환을 가속화한다. 하드웨어의 경쟁력이 소프트웨어로 옮겨지는 시대인 만큼 SDx 시대가 펼쳐질 것으로 예측된다.

빨라지는 과학혁명, AI 사이언티스트

디지털이 과학 혁신의 주역으로 급부상하고 있다. 올해 노벨상을 받은 이들은 AI 석학자들이 많았다. AI+과학이 만나 패러다임이 변화되고 있는 것이다.

내년은 AI가 의료, 바이오 혁명을 현실화 하는 해가 될 것으로 전망된다. AI 주치의 시대가 개막하고, 제약 바이오에서도 AI를 본격적으로 활용해 신약을 개발할 것으로 보인다.

또 AI 과학자가 태동하는 해가 될 것으로 전망된다. AI가 물리, 화학, 소재, 우주 등 과학 분야에 적용되면서 발전 시간도 가속될 것이라는 설명이다.

디지털 미래의 힘, AI 안전과 주권

AI 혁신이 가속화되면서 딥페이크, 가짜 뉴스 등의 범죄 증가도 늘어나고 있다. 이와 같은 기술적인 혁신이 계속되면서 법과 제도도 정비되는 해가 될 것으로 관측된다. 나아가 검증, 관리가 강화되고 확산될 예정이다.

디지털 공동번영 사회, AI 안전 연구소, 등이 시장의 중요한 역할로 떠올라 안전하고 신뢰할 수 있는 AI를 위해 글로벌 연대도 필수적일 것으로 보인다.

ITTP는 소버린AI로 안보의 기틀을 세울 것으로 전망했다. 이미 글로벌 국가들은 AI 모델, 데이터, 컴퓨팅 파워 등을 바탕으로 안보 자산을 확보하고자 노력하는 모습을 보이고 있다.

[출처] https://n.news.naver.com/mnews/article/092/0002352566

Loading

12 11월 2024

[알아봅시다] 마감일 놓친 사람, 완성도 상관없이 ‘나쁜 평가’ 받아

[알아봅시다] 마감일 놓친 사람, 완성도 상관없이 ‘나쁜 평가’ 받아

마감일 놓친 사람, 완성도 상관없이 ‘나쁜 평가’ 받아

입력
미국 스탠퍼드대·캐나다 토론토대

마감일을 넘긴 결과물은 완성도와 무관하게 나쁜 평가를 받는 것으로 나타났다. ING alternative/게티이미지뱅크 제공.

마감일을 넘긴 결과물은 완성도와 무관하게 나쁜 평가를 받는 것으로 나타났다. ING alternative/게티이미지뱅크 제공.

결과물만 좋다면 하루이틀 정도 업무 마감 기한을 넘긴 건 평판에 나쁜 영향을 안 미칠까. 데드라인을 넘긴 기간이 짧든 길든 좋은 평가를 받을 수 없다는 연구결과가 제시됐다.

미국 스탠퍼드대와 캐나다 토론토대 공동 연구팀은 제출 시한을 넘겨 완성한 작업물은 질이 떨어지는 결과물이라는 평을 받는다는 논문을 국제학술지 ‘조직행동 & 의사결정 프로세스’ 11월호에 발표했다.

연구팀은 관리자, 임원, 인사담당자 등 다른 사람을 평가하는 직무를 수행하는 근로자 6982명을 대상으로 광고전단지, 예술작품, 비즈니스 제안서, 사진, 기사, 상품 홍보 등의 결과물을 평가하도록 했다. 동일한 결과물을 두고 일부에게는 마감 기한 내에 제출됐고 일부에게는 기한을 넘겨 제출됐다는 정보를 함께 제공했다.

그 결과 늦게 제출된 결과물은 일관되게 나쁜 평가를 받았다. 평가자들은 기한을 놓친 직원에 대해 성실도가 떨어진다고 믿었고 앞으로 함께 일하고 싶지 않다거나 업무를 할당할 의향이 없다고 답변했다.

제출 기한을 넘긴 기간은 중요하지 않았다. 데드라인이 하루 지났든 일주일이 지났든 제때 제출되지 않은 결과물은 부정적인 평가를 받았다. 직원이 관리자에게 마감 내 제출이 어려울 것이라는 사전 보고를 했다 해도 마찬가지로 좋은 평가를 받지 못했다.

연구팀은 사람들이 데드라인 내 업무를 마치지 못하는 현상이 발생하는 이유에 대해 ‘계획 오류’ 탓이라고 설명했다. 계획 오류는 계획을 세울 때 투입되는 시간을 과소평가하는 경향을 의미한다.

연구팀은 근로자가 스스로 통제할 수 없는 상황은 마감기한을 연장할 수 있는 구실이 될 수 있다고도 설명했다. 무작위로 선정돼 법원의 호출을 받아야 하는 배심원 의무 이행처럼 자신이 제어할 수 없는 일은 변명거리가 될 수 있다는 것이다. 연구팀은 ”마감일을 놓친 이유가 본인 스스로 통제할 수 없는 상황 때문이었다면 이를 반드시 관리자에게 얘기하라“며 ”자신의 사정을 봐줄 수 있는 몇 안 되는 이유가 된다“고 말했다.

<참고 자료>
doi.org/10.1016/j.obhdp.2024.104365

[출처] https://n.news.naver.com/article/584/0000029518?cds=news_media_pc

Loading

11 11월 2024

[인공지능 기술] “GPT 성능 향상 속도 둔화”…오픈AI, ‘오라이온’ 개선 위해 전략 수정

[인공지능 기술] “GPT 성능 향상 속도 둔화”…오픈AI, ‘오라이온’ 개선 위해 전략 수정

“GPT 성능 향상 속도 둔화”…오픈AI, ‘오라이온’ 개선 위해 전략 수정

  • 기자명 임대준 기자 
  •  
  •  입력 2024.11.10 19:30
  •  
  •  수정 2024.11.10 19:34

01. 165134_179275_4531.jpg

(사진=셔터스톡)
오픈 AI가 내년 초 출시할 차세대 인공지능(AI) 모델 ‘오라이온’의 성능을 끌어 올리기 위해 안간힘을 쓰고 있다는 소식이 전해졌다. 목표는 기존 ‘GPT-4’보다 월등한 성능을 선보이는 것이만, 큰 차이를 내는 것이 어려워지고 있다는 설명이다.

디 인포메이션은 9일(현지시간) “오픈AI가 GPT 모델 개선 속도 둔화에 따라 전략을 변경했다”라고 소개했다. 여기에서 말하는 전략이란 이전처럼 사전 훈련으로 모델 성능을 대폭 끌어올리는 것보다, 사후 강화학습이나 추론 기능 강화에 초점을 맞춘다는 내용이다. 

소식통에 따르면 샘 알트먼 오픈AI CEO는 오라이온이 훈련 과정의 20%만 완료했지만, 지능과 작업 수행 능력은 이미 GPT-4와 동등하다고 말했다. 또 현재는 오라이온의 안전성을 테스트 중으로, 내년 초 출시가 유력한 것으로 알려졌다.

특히 오픈AI는 이번 모델을 기존 GPT 시리즈가 아닌 오라이온으로 명명할 만큼, 다른 차원으로 만드는 것이 목표다. 

그러나 일부 오픈AI 직원은 오라이온의 성능이 이전 모델보다는 우수하지만, GPT-3에서 GPT-4로 넘어가는 과정에 선보인 성능 향상보다 폭이 훨씬 작았다고 말했다.

또 일부 오픈AI 연구원들은 특정 작업에서 이전 모델과 성능이 별 차이가 없다고 전했다. 언어 작업에서는 더 뛰어난 모습을 보였지만, 코딩과 같은 작업에서는 이전 모델보다 성능이 좋지 않을 수 있다는 것이다. 특히 실행 비용이 더 비싸다는 것을 감안하며 사실상 성능 후퇴로 보는 것이 맞다는 입장이다.

이런 문제는 지금까지 대형언어모델(LLM) 개발의 원칙으로 통했던 ‘스케일링 법칙’이 사실상 한계에 달했기 때문이라는 분석이다. 스케일링 법칙은 LLM에 더 많은 학습 데이터를 제공하고 추가 컴퓨팅을 제공하면 성능이 계속 향상될 것이라는 논리다.

이처럼 GPT 모델의 개선 속도가 느려지며 AI 업계에서는 사전 학습보다는 다른 방법을 모델을 개선하는 쪽으로 방향을 전환하고 있으며, 이 가운데 새로운 확장 법칙이 생겨날 가능성이 있다고 전했다.

이에 대해서 마크 저커버그 메타 CEO를 비롯한 일부 관계자들은 “현재 기술이 개선되지 않는 최악의 시나리오를 맞아도 소비자 및 기업용 제품을 만들 여지가 여전히 많이 있을 것”이라고 말했다. 그 대표적인 예가 최근 앤트로픽이 내놓은 ‘컴퓨터 유즈’와 같은 AI 에이전트 기능이다. 에이전트는 분명히 챗GPT 등장만큼 혁신적인 기술이 될 수 있다.

특히 업계에서는 LLM 성장이 한계에 맞았다는 지적이 나오고 있다. 

전설적인 벤처 캐피털리스트 벤 호로비츠는 지난주 한 팟캐스트에 출연해 “AI 훈련에 사용되는 GPU의 수를 계속 늘리고 있지만, 이제는 과거만큼의 지능적인 개선을 전혀 얻지 못하고 있다”라고 지적했다. 동료인 마크 앤드리슨도 “많은 똑똑한 사람들이 한계를 돌파하고 더 높은 수준의 추론 능력에 도달하는 방법을 알아내기 위해 노력하고 있다”라고 말했다.

하지만 저커버그 CEO는 물론 알트먼 CEO와 다른 기술 리더들은 아직 전통적인 확장 법칙이 한계에 도달하지 않았다고 주장한다.

이 때문에 이들은 모델의 사전 훈련에서 최대한 성능을 얻어내기 위해 지금과는 차원이 다른 수십억달러 규모의 투자로 대규모의 데이터센터를 설립하려는 것으로 보고 있다.

물론 투자가 늘어나는 만큼 모델 성능 향상이 뒷받침될지는 의문이다. 비용에 비해 얻을 수 있는 성능 발전이 작다면, 투자 효율성에 의문이 생길 수 밖에 없다.

노암 브라운 오픈AI 연구원이 지난달 TED 컨퍼런스에서 “어느 순간 스케일링 패러다임이 무너질 수 있다”라며 “수천억달러 또는 수조달러의 비용이 드는 모델을 계속 훈련할 것인가”라고 말한 것도 이런 이유에서라는 것이다.

또 사전 훈련에서 얻는 이득이 줄어드는 이유 중 하나로는 고품질 데이터의 공급이 줄어든다는 점이 꼽혔다.

지난 몇 년 동안 LLM은 사전 학습에 웹사이트와 서적, 공개 사용이 가능한 텍스트 등을 사용했지만, 이미 최대한 많은 것을 쥐어 짜냈다는 말이다.

또 데이터 부족의 대안으로 꼽히는 합성 데이터도 한계가 지적됐다. 오라이온은 GPT-4와 최근에 출시된 o1을 포함한 다른 모델이 생성한 합성 데이터로 부분적인 학습을 받은 것으로 알려졌다. 그러나 합성 데이터는 오라이온이 특정 측면에서 이전 모델과 유사해질 수 있는 새로운 문제로 이어지고 있다고 오픈AI 직원은 말했다.

이에 대응해 오픈AI는 사전 학습을 담당했던 닉 라이더가 이끄는 기초 팀을 만들어 학습 데이터 부족 문제를 해결하는 방법과 확장 법칙이 얼마나 오랫동안 적용될지 파악하겠다고 밝혔다.

02 165134_179277_4830.jpg

챗GPT 훈련 과정 (사진=링크드인, Pradeep Menon)
이 때문에 오픈AI는 사전 훈련이 아닌, 다른 방법에 집중하는 것으로 알려졌다. 여기에는 강화 학습과 추론 강화가 주를 이루는 것으로 알려졌다.

오픈AI는 챗GPT부터 인간 피드백을 통한 강화학습(RLHF)으로 유명했다. 최근에는 RLHF를 담당하는 외부 계약직이 1000명에 달하는 것으로 전해졌다. 이를 관리하는 ‘휴먼 데이터 팀’도 운영하고 있다. 

특히 박사급 학위 소지자 등 전문가들이 포함된 것으로 알려졌다. 이들의 검증을 통해 모델 성능의 기준을 높이겠다는 의도로, 이에 따른 비용 증가도 만만치 않은 것으로 알려졌다.

또 o1 모델에 이어 o2를 개발하는 등 추론 성능 향상에도 전념하고 있다. 알트먼 CEO는 최근 “회사의 최우선 순위는 o1과 그 후속 모델의 개발”이라고 밝혔으며, 지난주에는 X(트위터)를 통해 o2의 벤치마크 성능이 비약적으로 좋아졌다는 글을 실수로 올린 바 있다.

즉 추론 성능 향상이 오라이온의 성능을 끌어올릴 핵심으로 보는 것이다. 이 때문에 오라이온은 추론 후속 모델 출시 이후 개발을 마칠 것으로 예측되고 있다.

브라운 연구원도 TED에서 비슷한 내용을 공개한 바 있다. 모델을 변경하지 않고도 사용자 질문에 답하는 동안 모델에 추가 컴퓨팅 리소스와 시간을 제공하면 응답 품질이 계속 향상될 수 있다고 전했다. 이른바 ‘테스트-타임 컴퓨트(Test-Time Compute)’라는 개념이다.

03. 165134_179276_4721.png

테스트-타임 컴퓨트 (사진=오픈AI)
따라서 오픈AI가 사전 훈련으로 성능 향상을 조금이라도 올릴 수 있다면, 결국 추론 강화로 전반적인 모델 성능 향상을 이뤄내는 구조라고 한 관계자가 전했다.

알트먼 CEO도 결국 이런 방식을 염두에 두는 것으로 분석됐다. 지난 10월 데브데이에서는 “나는 추론이 우리가 수년간 기다려온 많은 것을 가능하게 해주기를 바란다”라고 말했다.

특히 게리 탄 와이 컴비네이터 CEO와의 팟캐스트에서는 “우리는 인공일반지능(AGI)을 달성하기 위해 무엇을 해야 할지 알고 있다”라며 “일부는 창의적인 방식으로 현재 모델을 사용하는 것을 포함한다”라고 말했다.

이에 대해 이온 스토이카 데이터브릭스 공동 창립자 겸 회장은 “LLM의 성과가 특정 면에서는 정점에 도달했지만, 다른 면에서는 그렇지 않을 가능성이 있다”라고 말했다.

그는 AI가 코딩이나 복잡하고 여러 단계로 구성된 문제 해결 등의 작업에서 지속적으로 개선되고 있지만, 텍스트의 감정을 분석하거나 의학적 문제의 증상을 설명하는 등 일반적인 능력에서는 진전이 둔화한 것으로 보인다고 설명했다.

“일반 지식 질문에 대해서는, 지금은 LLM의 성과가 정체돼 있다고 주장할 수 있다. 우리에게는 더 많은 고품질 데이터가 필요하며, 합성 데이터는 그다지 도움이 되지 않는다”라고 말했다.

임대준 기자 ydj@aitimes.com

출처 : AI타임스(https://www.aitimes.com)

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

Loading

7 11월 2024

[인공지능 기술] WebLLM 소개와 구조 분석

[인공지능 기술] WebLLM 소개와 구조 분석

WebLLM 소개와 구조 분석

 
 

2022년 11월 ChatGPT가 초기 베타버전을 출시한 이후 많은 사용자들이 이러한 언어 모델에 관심을 가지고 한동안 폭발적인 반응과 시장의 변화를 가져오면서 관심이 집중되고 있습니다.

한번쯤 사용해 보셨을(혹은 들어 보셨을) LLM과 컴파일, 빌드 과정에 대해 간단히 소개하고 최근 크롬에 정식 탑재된 WebGPU를 사용한 WebLLM의 구조 형태를 가볍게 분석해보고자 합니다.

관련 용어와 개념 소개

일반적인 어플리케이션 위주의 개발을 수행해온 저는 새로운 도메인이자 엔지니어링 영역이기도 한 AI 및 Machine learning에 대해 학습하면서 다양한 용어와 개념들을 새로 학습해야 했습니다. 이와 같은 분들을 위해 WebLLM의 구조에 대해 이야기하기 전에 먼저 용어와 기반 개념들을 소개하고자 합니다.

LLM

https://twitter.com/akshay_pachaar/status/1667147092614336512

대형 언어 모델(Large Language Model)이라고도 불리는 LLM은 ChatGPT 베타 출시 이후로 더욱 유명해진 딥러닝 모델입니다. 기본적인 개념으로는 입력값으로 들어오는 자연어를 기반으로, 통계학적으로 가장 적절한 출력값을 내는 원리로 되어 있습니다. 간단하게 이야기하자면 다음 단어가 나올 확률을 계산하여 그럴듯한 문장을 만들어내는 것이라고 할 수 있습니다.

MLC-LLM 프로젝트

MLC LLM의 세 가지 독립 하위 모듈: https://llm.mlc.ai/docs/get_started/project_overview.html

MLC-LLM 프로젝트는 LLM을 다양한 환경에서 배포하고 범용 API를 통해 쉽게 사용할 수 있도록 돕는 배포 솔루션입니다. 위 이미지와 같은 일련의 과정을 통해 모델을 정의하고 컴파일한 후 각 디바이스 플랫폼별 런타임에서 LLM을 실행할 수 있도록 구성되어 있습니다.

  1. MLC에서 미리 정의해 둔 모델(Llama2 등)을 사용하거나, TVM Unity 인터페이스 기반의 파이썬으로 작성된 모델을 구현해야 합니다.
  2. 후술할 TVM Unity를 통해 컴파일되며, 이 때 model lib, weights, config 결과물이 export됩니다. 우리가 사용하게 될 웹 브라우저의 라이브러리(WebAssembly)는 .wasm의 형태로 떨어지게 됩니다.
  3. 각 디바이스 플랫폼별 런타임에서 컴파일된 모델 라이브러리와 가중치(weights), 설정 등을 로드하여 실행되며, 각 런타임별 API가 제공됩니다.

TVM

TVM의 컴파일러 스택과 런타임: https://www.kc-ml2.com/posts/blog_TVM

이러한 LLM 등의 AI 어플리케이션을 생성하고 하드웨어 장치에서 실행하기 위해서는 우리가 어플리케이션을 만들 때와 동일하게 소스 코드를 변환하여 저수준의 layer에서 인식할 수 있는 코드로 변환하고 실행하는 과정이 필요합니다. 예를 들어 윈도우 환경의 Nvidia 그래픽 연산 카드에서 AI 어플리케이션을 구동해야 할 경우, python으로 설계한 모델 코드는 C++ 및 CUDA 코드로 변환되고 최종적으로 각 하드웨어를 위한 어셈블리 언어로써 변환됩니다.

Apache TVM이라는 end-to-end 오픈소스 컴파일러에서는 이러한 과정(딥러닝 시스템 스택)에 대해 인터페이스를 제공하며 아래에서 살펴볼 WebLLM을 위한 WebAssembly 런타임 또한 제공됩니다.

WebLLM

MLC에서는 TVM에서 제공하는 WebAssembly 런타임 및 자바스크립트 인터페이스를 응용하여 Chat 형식으로 구성된 WebLLM을 배포했습니다. 이를 사용하면 서버와의 통신 없이 오로지 웹 브라우저에서 WebGPU의 가속을 사용하여 LLM을 구동할 수 있습니다.

WebGPU

WebGPU는 WebGL의 후속 버전 API입니다. 이미지 등 그래픽 연산에 집중되던 WebGL과는 다르게 GPU에서 일반적인 계산을 수행하는 데 더 최적화되어 있습니다. 또한 네이티브 API를 직접 미러링하지 않고 자체적인 추상화를 도입하여 웹용 API에 적합하지 않은 개념들(저수준의 메모리 관리 등)을 숨기고 편하게 사용될 수 있도록 설계되었습니다.

다만 현재(2023.10)는 크롬 113 이상(Windows, MacOS, ChromeOS)에서만 지원하고 있습니다: https://caniuse.com/?search=webgpu

WebLLM 환경 구축하기

???? 순서: emscripten 설치 → tvmjs 컴파일 → web-llm 빌드

WebLLM을 로컬에서 빌드하고 패키징하기 위해서는 몇 가지 작업이 필요합니다. WebLLM 빌드에 앞서 의존성 패키지를 살펴보면, tvmjs만 유일하게 패키지로 제공되지 않고 소스 컴파일이 필요합니다.

tvmjs 컴파일을 위해서는 emscripten을 먼저 설치해야 합니다. emscripten은 LLVM을 사용하는 언어(C/C++)를 웹 어셈블리로 컴파일할 수 있도록 제공하는 툴체인이며, TVM의 WebAssembly 런타임을 컴파일하고 시스템 라이브러리 지원을 제공하기 위해 필요합니다.

emscripten SDK 설치 과정: https://emscripten.org/docs/getting_started/downloads.html#installation-instructions-using-the-emsdk-recommended

emscripten 설치가 완료되었다면, WebLLM repo의 스크립트(scripts/prep_deps.sh)를 실행하여 순서대로 tvmjs를 컴파일하고 패키지를 빌드할 수 있습니다.

script/prep_deps.sh
script/prep_deps.sh 실행 결과

WebLLM 구조

WebLLM의 Javascript단 API 구조는 상대적으로 단순하게 구성되어 있습니다. 우리가 흔히 접해왔던 ChatGPT와 같은 형태의 LLM을 서포트하기 위해서 아래와 같이 chat 서비스에 초점이 맞춰진 핵심 모듈들로 구성되어 있습니다.

  • ChatModule: 사용자 단의 메소드를 제공하는 외부 인터페이스를 구현하고 있으며, LLMChatPipeline을 직접 제어하며 WebLLM 초기화프롬프트 전송 등의 추상화된 개념을 구현하고 있습니다.
  • LLMChatPipeline: TVM 런타임 인스턴스의 초기화/실행 등의 직접 제어를 수행하고, Conversation 데이터에 접근하면서 프롬프트 메시지를 제어합니다.
  • Conversation: 메세지와 관련된 데이터의 제어를 수행하며, 각 LLM별로 적합한 Instruction config를 정의하고 있습니다.

이 외에도 WebLLM에서 사용할 설정의 인터페이스를 구현한 Config, WebWorker 형태로 ChatModule을 사용할 수 있도록 구성된 ChatWorkerHandler 등이 존재합니다.

WebLLM의 Javascript단 API를 실행하는 샘플 로직과 내부 Flow는 아래와 같습니다.

Start Example: https://github.com/mlc-ai/web-llm
Example Flow

[출처] https://medium.com/@widoint/webllm-%EC%86%8C%EA%B0%9C%EC%99%80-%EA%B5%AC%EC%A1%B0-%EB%B6%84%EC%84%9D-2cfeac159454

Loading