PyTorchKR
- 최근 Google의 ScreenAI나 Apple의 ReALM과 같은 스마트폰을 비롯한 다양한 화면에서의 내용을 바탕으로 사용자와 의사소통을 하는 연구들이 진행되고 있습니다. 이러한 연구들이 사용자와 스마트폰 간의 연결을 더 잘 하기 위한 것이라면, Nexa AI에서 공개한 Octopus-v2 모델은 사용자의 입력을 받아 실제로 Android 단말을 제어하면서 여러가지 기능들을 실행할 수 있는 LLM입니다.
- Octopus-v2는 스마트폰과 같은 단말에서 동작하는, 에이전트(Agent)를 위한 LLM으로, 상대적으로 작은 2B 규모의 크기를 갖고 있습니다. 또한, Android API를 통해 안드로이드 시스템 관리부터 다양한 디바이스의 조율까지 폭넓게 활용할 수 있으며, 정확도와 속도 측면에서도 손색없는 성능을 보이고 있습니다. Octopus-v2 모델을 사용하여 어떠한 일들이 앞으로 가능할지, 함께 고민해보시죠!
Octopus-v2, Nexa AI에서 공개한 Android 제어를 위한 2B 규모의 Agent LLM
소개
Octopus-V2-2B는 Nexa AI에 의해 개발된 20억 개의 파라미터를 가진 고급 오픈소스 언어 모델입니다. 이 모델은 안드로이드 API를 호출하는 기능에 특화되어 있으며, 기존 RAG 방식이 요구하는 방대한 입력 토큰 대신 기능 토큰 전략을 도입함으로써 GPT-4와 유사한 성능을 달성하면서도 추론 속도를 대폭 향상시켰습니다. 이는 모바일 기기에서의 활용 가능성을 크게 높여줍니다.
Octopus-v2의 주요 기능은 다음과 같습니다:
- 기능 토큰 전략: Octopus-v2는 훈련과 추론 단계 모두에서 고유한 기능 토큰 전략을 사용하여 기존 방법보다 훨씬 빠른 추론 속도와 높은 정확도를 제공합니다.
- 모바일 기기에서의 활용성: 안드로이드 시스템 관리부터 다양한 디바이스의 조율에 이르기까지, 모바일 기기에서 직접 작동하는 다양한 애플리케이션에 적용 가능합니다.
- 뛰어난 추론 속도 및 정확도: Llama7B + RAG 솔루션 대비 36배 빠른 추론 속도를 보이며, 함수 호출 정확도에서도 31% 향상된 성능을 나타냅니다.
데모 영상
사용 방법
Octopus-v2는 다음과 같은 코드를 사용하여 GPU 상에서 실행할 수 있습니다. 이 코드는 사용자로부터 입력된 텍스트에 기반하여 적절한 함수를 호출하고, 필요한 매개변수를 생성하여 함수를 호출하는 과정을 보여줍니다.
from transformers import AutoTokenizer, GemmaForCausalLM
import torch
import time
def inference(input_text):
start_time = time.time()
input_ids = tokenizer(input_text, return_tensors="pt").to(model.device)
input_length = input_ids["input_ids"].shape
outputs = model.generate(
input_ids=input_ids["input_ids"],
max_length=1024,
do_sample=False)
generated_sequence = outputs[:, input_length:].tolist()
res = tokenizer.decode(generated_sequence)
end_time = time.time()
return {"output": res, "latency": end_time - start_time}
model_id = "NexaAIDev/Octopus-v2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = GemmaForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
input_text = "Take a selfie for me with front camera"
nexa_query = f"Below is the query from the users, please call the correct function and generate the parameters to call the function.\n\nQuery: {input_text} \n\nResponse:"
print("nexa model result:\n", inference(nexa_query))
print("latency:", time.time() - start_time," s")
성능
Octopus-v2는 GPT-4 및 RAG + GPT-3.5와 비교하여 뛰어난 추론 속도와 정확도를 제공합니다. 특히, 단일 A100 GPU에서 Llama7B + RAG 솔루션에 비해 36배 빠른 추론 속도와 31% 향상된 함수 호출 정확도를 보여줍니다. 전체적인 벤치마크 결과는 여기 링크된 엑셀 파일에서 확인할 수 있습니다.
라이선스
Octopus-v2는 Nexa AI 라이선스를 따릅니다. 전문은 여기에서 확인할 수 있으며, 일반적인 오픈소스 라이선스들에 비해서 다소 엄격하고 구체적인 규제가 포함되어 있습니다. Nexa AI 라이선스의 주요한 내용은 다음과 같습니다:
- 비독점적이고 전 세계적인 라이선스: Nexa AI는 Octopus Materials(옥토퍼스 2와 관련 문서)의 비독점적이고 전 세계적인 사용, 복제, 배포, 수정 및 파생 작업 생성에 대한 라이선스를 제공합니다.
- 재배포 조건: Octopus Materials 또는 그 파생 작품을 제3자에게 제공할 경우, 이 계약의 복사본을 제공해야 합니다. 또한 모든 배포본에는 "Octopus 2 is licensed under the Octopus 2 Community License, Copyright © Nexa AI Platforms, Inc. All Rights Reserved."라는 저작권 고지를 포함해야 합니다.
- 추가 상업적 조건: 제품이나 서비스의 월간 활성 사용자 수가 100만 명을 초과하는 경우 Nexa AI로부터 별도의 라이선스를 요청해야 합니다. 이는 Nexa AI가 단독 재량으로 부여할 수 있으며, 이러한 권리를 행사하기 전에 Nexa AI의 명시적인 승인이 필요합니다.
- 지적 재산권: 파생 작업과 수정이 사용자에 의해 생성된 경우, 해당 작업의 소유권은 사용자에게 있습니다. 그러나 Octopus Materials와 그 파생물에 대한 모든 권리는 Nexa AI가 소유합니다.
- 면책 조항 및 책임 제한: Nexa AI는 Octopus Materials 및 그 결과물에 대해 명시적이거나 묵시적인 어떠한 보증도 하지 않으며, 이로 인한 직접적, 간접적, 특별 또는 결과적 손해에 대해 책임을 지지 않습니다.
- 준거법 및 관할권: 이 계약은 캘리포니아 주 법률에 따라 해석되며, 캘리포니아 주 법원에 독점적 관할권이 있습니다.
더 읽어보기
Next AI 홈페이지
Octopus-v2 모델
Octopus-v2 모델 논문
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~