출처: PermaDAO
AO는 온체인 AI를 위해 설계된 비동기 통신 네트워크로, Arweave와의 결합을 통해 고성능 오프체인 연산과 영구적인 데이터 저장을 가능하게 합니다. 이 문서에서는 AO에서 AI 프로세스를 실행하는 단계를 설명하며, 현재는 작은 모델만 지원하지만 향후 더 복잡한 연산 기능을 지원하여 온체인 AI의 미래가 유망할 것으로 전망됩니다.
AO의 AI란 무엇인가요?
AO는 본질적으로 온체인 AI를 위해 설계되었습니다
2023년은 AI의 해라고 불릴 만큼 다양한 대규모 모델과 애플리케이션이 등장하고 있습니다.
AI 개발은 웹3.0 세계의 핵심적인 부분이기도 합니다. AI 개발은 웹3.0 세계의 핵심적인 부분이기도 합니다. 하지만 오랫동안 '블록체인의 불가능한 삼각형'으로 인해 블록체인 컴퓨팅은 비싸고 혼잡한 상태로 유지되어 웹3.0의 AI 개발을 방해했습니다. 하지만 이제 이러한 상황은 AO를 통해 개선되었으며 무한한 잠재력을 보여주고 있습니다.
AO는 메시지 중심의 비동기 통신 네트워크로 설계되었습니다. 저장된 합의 패러다임(SCP)을 기반으로 하는 AO는 Arweave 위에서 실행되므로 Arweave와 원활하게 통합할 수 있습니다. 이 혁신적인 패러다임에서는 저장(합의)과 연산이 효과적으로 분리되어 오프체인 연산과 온체인 합의를 가능하게 합니다.
고성능 컴퓨팅: 스마트 컨트랙트 연산은 오프체인에서 수행되며 더 이상 온체인 블록 합의 프로세스의 제약을 받지 않으므로 연산 성능이 크게 확장됩니다. 서로 다른 노드의 개별 프로세스는 기존 EVM 아키텍처에서처럼 모든 노드가 반복 계산과 글로벌 일관성 검증을 완료할 때까지 기다릴 필요 없이 독립적으로 병렬 계산과 로컬 검증을 수행할 수 있으며, Arweave는 모든 명령, 중간 상태 및 계산 결과를 영구 저장하여 AO의 데이터 가용성 및 합의 계층 역할을 수행합니다. 그 결과 GPU를 이용한 컴퓨팅을 포함한 고성능 컴퓨팅이 가능합니다.
영구 데이터: 이것은 Arweave가 오랫동안 연구해 온 부분입니다. AI 학습의 핵심은 학습 데이터의 수집이며, 이것이 바로 Arweave의 강점입니다. 최소 200년 이상의 데이터를 영구적으로 보유하고 있는 AO + Arweave는 에코시스템에 풍부한 데이터 세트를 보유하고 있습니다.
또한 AO와 Arweave의 창립자인 샘은 6월에 열린 런칭 이벤트에서 aos-llama를 기반으로 한 최초의 AI 프로세스를 시연했습니다. 기존에 사용되던 Lua 대신 성능을 위해 C로 컴파일된 wasm을 사용했습니다.
모델은 허깅페이스의 오픈소스인 llama 2를 사용했으며, 약 2.2GB의 모델 파일로 Arweave에서 다운로드할 수 있습니다.
라마랜드
라마랜드는 AI 기술을 핵심으로 하는 첨단 AO 플랫폼에 구축된 최첨단 대규모 멀티플레이어 온라인(MMO) 게임입니다. 또한 AO + Arweave 에코시스템의 첫 번째 AI 애플리케이션이기도 합니다. 가장 큰 특징은 라마 코인 발행이 100% AI로 제어된다는 점으로, 유저는 라마왕에게 기도하고 라마왕이 보상으로 주는 라마 코인을 얻을 수 있으며, 맵 내 라마 조커와 라마 오라클도 AI 프로세스 기반의 NPC입니다.
img src="https://img.jinse.cn/7295195_image3.png">
그렇다면 AO에서 AI 프로세스를 어떻게 실행할 수 있는지 직접 살펴봅시다.
AI 데모
1. 전체 소개
우리는 이미 AO에 배포된 Sam의 AI 서비스를 사용하여 자체 AI 앱을 구현하고 있습니다. Sam이 배포한 AI 서비스는 라마-헤드와 라마-워커(여러 라마-워커)의 두 부분으로 구성됩니다. 라마-헤드는 AI 작업을 할당하고 AI 작업의 가격을 책정하는 역할을 담당하고, 라마-워커는 실제로 빅 모델을 실행하는 프로세스입니다. 그런 다음 AI 애플리케이션은 llama-herd를 요청하고 요청 시 일정량의 wAR을 지불하여 AI 기능을 구현합니다.
주: 왜 자체적으로 llama-worker를 실행하여 AI 애플리케이션을 구현하지 않는지 궁금할 수도 있습니다. AI 모듈을 프로세스로 인스턴스화할 때 15GB의 메모리가 필요하며, 직접 인스턴스화하면 메모리 부족 오류가 발생하기 때문입니다.
2. 프로세스 생성 및 wAR 충전
먼저 프로세스를 생성하고 최신 버전으로 업그레이드한 후 진행해야 합니다. 이렇게 하면 실수를 방지하고 시간을 많이 절약할 수 있습니다.
이미지 src="https://img.jinse.cn/7295199_image3.png" title="7295199" alt="JBd5RmxayVJxYgLm9uWzSnqx4qnTPQLpYCGWfTFq.jpeg">
AI 프로세스를 실행하는 데는 소량의 wAR이 소요되며, arconnect를 통해 전송에 성공하면 프로세스에 Action = Credit-Notice 메시지가 표시됩니다. AI 프로세스를 한 번 실행하려면 wAR이 필요하지만 그다지 많은 양은 아니므로 데모 목적으로 0.001 wAR을 프로세스에 전송할 수 있습니다.
주: wAR은 3~30분 정도 걸리는 AOX 크로스 체인 브리지를 통해 얻을 수 있습니다.
이미지 src="https://img.jinse.cn/7295196_image3.png">
다음 명령으로 현재 프로세스의 wAR 잔액을 확인할 수 있습니다. 아래는 약 5회 실행 후 남은 wAR입니다. 소모된 양은 토큰의 길이와 큰 모델의 1회 실행에 대한 현재 실시간 가격과 관련이 있습니다. 또한 현재 요청이 혼잡한 상태인 경우 추가 비용도 발생합니다. (이 글의 마지막 부분에서 관심 있는 분들을 위해 코드에서 수수료 계산을 더 자세히 설명하겠습니다.)
주: 여기서 소수점은 12자리로, 999999673 는 0.00099999999673 wAR입니다.
3. APM 설치/업데이트
img src="https://img.jinse.cn/7295201_image3.png" title="7295201" alt="M4af1mDbuTj2JBAET3UP2RA1VheGGnrQ2cDqeVIk.jpeg">
APM은 패키지 관리라고 합니다. AI 프로세스를 구축하기 위해서는 APM을 통해 해당 패키지를 설치해야 합니다. 위의 명령어를 실행하고 해당 프롬프트가 나타나면 APM을 성공적으로 설치/업데이트한 것입니다.
4. 라마허더 설치
실행이 완료되면 프로세스 내에 Llama 객체가 생성되며, Llama를 입력하여 접근할 수 있고,
Lama Herder가 성공적으로 설치됩니다.
주: 실행 중인 프로세스에 wAR이 충분하지 않으면 Llama.run 메서드가 실행되지 않고 전송 오류가 발생하므로 첫 번째 단계에 따라 wAR을 충전해야 합니다.
5. Hello Llama
다음으로 간단한 인터랙션을 해보겠습니다.
다음으로 간단한 상호작용을 해보겠습니다. AI 프로세스에 "인생의 의미는 무엇인가요?"라고 질문합니다. AI 프로세스는 실행하는 데 몇 분 정도 걸리며, 대기 중인 AI 작업이 있는 경우 더 오래 걸립니다.
아래 코드에서 반환된 대로 AI는 "삶의 의미는 항상 인간을 매료시켜온 깊고 철학적인 질문입니다."라고 대답합니다.
주: 실행 중인 프로세스에 wAR이 충분하지 않으면 Llama.run 메서드를 실행할 수 없으며 전송 오류가 발생합니다. wAR을 보충하는 첫 번째 단계를 따라야 합니다.
6. 라마 조커 만들기
한 걸음 더 나아가 라마 조커의 구현을 살펴봅시다. (지면 제약으로 인해 핵심 AI 관련 코드만 보여드립니다.)
Lama Joker를 구축하는 것은 웹 2.0 AI 앱에서 챗봇을 구축하는 방법과 비슷하게 매우 간단합니다.
먼저, 빌드된 프롬프트의 여러 역할을 < 시스템|&t; / < 사용자|&t; / < 어시스턴트|&t; 로 구분합니다.
두 번째로 프롬프트의 고정된 부분을 식별합니다. 라마 조커의 예에서는 "주어진 주제에 대해 농담을 해보세요"라는 내용이 있는 &system|&t; 입니다.
마지막으로 사용자와 상호작용할 라마 조커 Npc를 빌드합니다. 여기서는 지면 관계상 로컬 변수 userContent = "cats"를 직접 정의했습니다. 이는 사용자가 고양이 관련 농담을 듣고 싶어한다는 것을 나타냅니다.
그렇게 간단하지 않죠.
이미지 src="https://img.jinse.cn/7295213_image3.png" title="7295213" alt="liahvGe3r5myHgI5nhtWNGelpEzXPDOnOTe0WnZ3.jpeg">
< strong>더
온체인에서 AI를 구현하는 능력은 이전에는 상상할 수 없는 일이었습니다. 이제 AO에서 AI를 기반으로 높은 수준의 애플리케이션 완성도를 달성할 수 있게 되었으며, 그 전망은 모두에게 무한한 상상의 공간을 제공할 것으로 기대됩니다.
그러나 현재로서는 한계가 분명합니다. 현재로서는 약 2GB의 '작은 언어 모델'만 지원할 수 있으며, 아직 컴퓨팅을 위해 GPU를 사용할 수 없습니다. 다행히도 AO의 아키텍처는 이러한 단점을 해결하도록 설계되었습니다. 예를 들어 GPU를 지원하는 WASM 가상 머신을 컴파일할 수 있습니다.
가까운 미래에 AO 체인에서 AI가 꽃을 피우기를 기대합니다.
부록
앞에서는 라마 AI의 비용 계산과 함께 함정을 남겼습니다.
이것은 초기화 후의 라마 오브젝트이며, 각각 중요한 오브젝트에 대한 저의 이해를 제공합니다.
M.herder: Lama Herder 서비스의 식별자 또는 주소를 저장합니다.
M.token: AI 서비스 결제에 사용되는 토큰입니다.
M.feeBase: 기본 수수료, 총 수수료 계산에 사용되는 기준값입니다.
M.feeToken: 요청에 포함된 토큰 수에 따라 추가 수수료를 계산하는 데 사용되는 토큰당 수수료입니다.
M.lastMultiplier: 최근 거래 비용의 승수 계수로, 현재 비용을 조정하는 데 사용될 수 있습니다.
M.queueLength:수수료 계산에 영향을 미치는 현재 요청 대기열의 길이입니다.
M.feeBump: 수수료 증가 계수, 기본적으로 1.005로 설정되며 매번 0.5%씩 증가합니다.
M.feeBase의 초기값은 0입니다.
M.getPrices 함수를 통해 라마 허더의 최신 가격 정보를 요청합니다.
여기서 M.feeBase, feeToken, M.lastMultiplier, M.queueLength는 모두 M.herder에 요청되며 실시간으로 변경되는 정보 응답 메시지를 받습니다. 이를 통해 항상 최신 가격 관련 필드 값을 유지할 수 있습니다.
수수료를 계산하는 정확한 단계:
M.feeBase에 수수료Token의 곱과 토큰 개수를 더한 초기 수수료를 구합니다.
그런 다음 초기 수수료에 M.lastMultiplier를 곱합니다.
마지막으로 요청 대기열이 있는 경우 1.005인 M.feeBump를 곱하여 최종 수수료를 얻습니다.
인용 링크
1. Arweave의 모델 주소:
https://arweave.net/ ISrbGzQot05rs_HKC08O_SmkipYQnqgB1yC3mjZZeEo
2. aos llama 소스 코드:
https://github.com/samcamwilliams/aos-llama
3. AOX 크로스 링크 브리지:
https://aox.arweave.dev/