AutoDroid: LLM-powered Task Automation in Android

DeepDIV!·2024년 6월 9일
0

논문 리뷰

목록 보기
3/10
post-thumbnail

Paper : https://arxiv.org/pdf/2308.15272

0. Abstract

[기존 연구 방법 ]

Mobile Task Automation 을 만들고 싶었지만,

  • 사용자의 언어를 알아듣기 힘듬
  • 앱마다 접근하는 방법이 다름

그래서 사용자와 개발자 모두에게 귀찮고 복잡한 노력이 필요했음


[ 새로운 연구 방법 ]

AutoDroid : 어떤 안드로이드 앱이든 특별한 노력없이 Mobile Task Automation 수행 가능한 시스템

  • UI representation : UI와 LLM을 이어주는 방법

    • LLM이 어플에 대한 domain knowlege를 이해할 수 있도록함
    • model inference를 줄이기 위해 multi-granularity query optimization module을 사용함
  • 새로운 benchmark를 도입해서 158개의 common task에서 평가함

    • 정확하게 action을 취할 확률 : 90.9%
    • task를 성공적으로 마무리할 확률 : 71.7%
    • GPT4 baseline 모델을 36.4%~39.7% 능가함

Multi-granularity query optimization module
데이터베이스 시스템에서 query를 최적화하기 위한 다양한 모듈

  • 데이터 검색과 처리 시간을 단축시킬 수 있음

1. Introduction

[ AutoDroid 연구 목적 ]

LLM-powered Mobile task Automation!

  • Autonomous agent 를 개발해서 user-specified task를 수행할 수 있도록 만들려고 함
  • Prompt engineering이 아닌 app-sepecific domain knowledge를 활용해서 LLM이 mobile UI를 이해하도록 만들려고 함
    • Dynamic App analysis 이용할꺼임
    • 그래서, 새로운 task가 들어와도 처리가능하도록 만들꺼임

Autonomous agent
외부의 개입 없이 스스로 행동을 결정하고 실행할 수 있는 소프트웨어나 로봇

  • 자신의 목표를 달성하기 위해 환경을 관찰하고, 의사 결정을 내리고, 그에 따라 행동할 수 있는 능력을 갖추고 있음

Dynamic App analysis
애플리케이션이 실제로 실행되는 동안 실시간으로 행동을 모니터링하고 분석하는 과정

  • 악성 소프트웨어 분석, 성능 최적화, 그리고 품질 보증 과정에서 중요한 역할을 함

[ AutoDroid 연구 목표 ]

  • GUI Representation : Task Automator 에 들어가는 input과 output을 모두 GUI state와 action으로 설정함

    • 새로 들어온 task에도 대처할 수 있도록 GUI로 결정함
    • LLM이 GUI information을 잘 이해하고 올바른 판단을 내릴 수 있도록 GUI state와 action을 바꿔줘야함 (raw information -> task completion knowledge)
      • GUI state : text format(HTML)으로 바꿔줌
      • Action : query로 바꿔줌
  • Knowlege Integration : 어플에 대한 domain-specific knowledge를 LLM에게 학습시켜야함

    • LLM이 task를 해결하기 위해 어떤 state를 활용해야할지 학습해야하기 때문임
    • 랜덤하게 target app에서 UI transition graph를 추출하면서 app knowledge를 얻음
  • Cost Optimization : LLM queries를 최적화해야함

    • LLM이 task를 수행하기 위해 많은 lengthy queries가 필요할 수도 있기 때문임
    • app knowledge를 학습하는 단계에서 query를 단순하게 만들면 자연스럽게 LLM queries가 최적화됨

Task Automators
특정 작업을 자동으로 수행하도록 설계된 소프트웨어 또는 도구


[ AutoDroid 정량 평가 ]

158개의 라벨링된 task로 Benchmark를 만듬


AutoDroid Contributon

  • 성능 평가를 위한 Benchmark 구축
  • 새로운 UI representation method 제시
  • 완성도 높은 모델(AutoDroid)을 개발함으로써, mobile task automation에 대한 발전 가능성 제시

2. Background and Motivation

Mobile Task Automation

다양한 task를 user에게 받아서 자동으로 처리하는 것

  • Task : user에게 request를 받아서 처리하는 것
  • UI state : mobile device 화면에 나타나는 GUI
  • UI action : user나 agent에 의해 실행되는 것
    • target element : UI state를 제어함 (ex. button)
    • action type : target element가 어떻게 제어되는지 보여줌 (ex. click, input)
    • value : input action에 대한 text content (ex. input에 들어가는 text)

따라서,
input으로 task에 대한 text를 받고, text를 분석하여 task를 수행할 수 있는 UI action에 대한 sequence를 output으로 내보냄.
이 output을 받아서 모바일 앱에서 target element와 action type를 수행함.

Large Language Models

사용자에게 text를 input으로 받을 것이기 때문에, LLM을 사용했음

  • LLM이 사용자의 의도를 잘 파악함
  • task automation은 documented interface 없이 모바일 환경에서도 영향을 받기 때문에 challenge한 부분이 있을 수 있음

LLM meets Mobile Task Automation

  • LLM language comprehension + reasoning ability = LLM-based GUI task Automation!

    • IPA : 개발자가 task workflow를 다 만들어두어야하기 때문에 어렵고 자유도가 낮음
  • LLM을 personalize하면 무한한 확장성을 가질 수 있음

Challenges

  • 적은 token으로 GUI state를 LLM이 이해할 수 있는 text로 표현하기 힘듬
  • 특정 앱에 대해서는 knowledge가 부족할 수 있음 (부정확하게 task를 수행하게 될 수 있음)
    • 정확하게 task를 수행하기 위해서는 app에 대한 깊은 이해가 필요함
    • 따라서, LLM prompt engineering에만 기댈 수 없음
    • LLM이 앱을 학습할 수 있는 더 나은 방법이 필요함!
  • task를 수행하기 휘해 LLM을 사용하면 과소비로 이어질 수 있음
    • token당 chatgpt 사용 금액이 나감

3. AutoDroid

LLM-powered end-to-end mobil task automation system

[ AutoDroid 실행 방법 ]

  • Offline stage : app-specific knowledge를 얻음
  • Online stage : 다음 action을 위한 guidance를 얻음
  1. (Offline stage) 랜덤하게 버튼을 클릭하면서 screen을 녹화하고 UTG에 추가함
  2. (Offline stage) UTG에 있는 UI들을 보면서 할 수 있는 task들을 요약함
  3. (Online stage) user가 명령을 내리면, Prompt Generator 가 tasK, UI state description, app information에 맞는 prompt를 생성함
    (GUI page에서 어떤 버튼을 클릭해야하는 지에 대한 정보도 담고 있음)
  4. (Online stage) Privacy Filter 가 민감한 개인 정보는 걸러서 prompt를 LLM에 전달함
  5. (Online stage) Task Executer 가 LLM에게 action guidance를 받아 앱 내에서 task action을 수행함
  6. 만약에 위험성이 큰 action을 취하려고 하면, 그 전에 user에게 동의를 구하는 message를 띄움

Task-oriented UI Prompting

  • GUI interface를 HTML prompt로 바꿔줌

    • LLM이 HTML style을 제일 잘 인지함
  • LLM이 앱 내에서 Action을 수행할 수 있는 prompt만을 반환하도록 제한해야함

    • requirement를 정해줘야함

Exploration-based Memory Injection

앱에 관한 정보를 LLM에게 전달해주지만, 이런 단점들을 가지고 있음

  • LLM으로부터 직접적으로 실행되지 않고 랜덤하게 UTG를 얻음
  • task automation을 위한 중요한 정보 없이, 오로지 UI와 action data로 메모리가 구축됨
  • 앱은 보통 많은 양의 UI screen과 UI elements(buttons..)를 가지고 있으므로, prompt로 나타낼 경우 LLM token 제한을 넘을 수밖에 없음

따라서, AutoDroid는 UI graph를 보면서 시뮬레이션을 돌림. 이런 시뮬레이션 데이터를 가지고 LLM은 user task를 어떻게 실행할지 학습하게됨.

Simulated Task Generation
AutoDroid는 UTG를 분석해서 simulated task를 생성함

  • UI states와 UI elements 사이의 관계를 이해하고 task를 실행할 수 있음

  • Simultaed task table : LLM이 UI elements가 일어날 수 있는 모든 가능성을 계산한 표 (만약 UI element가 multiple UI states에서 나타나면 초기 UI와 가장 가까운 것으로 고름)

    • ejie^i_j j=1Ui^{|U_i|}_{j=1}

      • ejie^i_j : Simulated task
        (이 UI element를 클릭함으로써 발생할 수 있는 모든 Simulated task 개수를 의미함)

      • UiU_i : UI state UiU_i
        (임의의 UI state를 의미함)

      • Ui|U_i| : the number of UI elements
        (초기 UI에서부터 UiU_i UI state로 가기까지 모든 element들의 총 개수를 의미함)

      • UI states
        (초기 UI에서부터 UiU_i UI state로 가기까지의 UI states sequence를 의미함)

      • j=1{j=1} :

        이 j는 무엇을 의미하는걸까?

    • 이 table은 각각의 functionality를 archive함으로써 agent에게 주어진 task를 어떻게 효율적으로 완수할 수 있는지에 대한 정보를 제공함

  • UI function table : UTG에 있는 각 UI state에 대한 funcitionality를 제공함

    • LLM이 각 UI state의 function에 대해 요약한 정보를 담고 있음

Augmenting Prompts with App Memory
App knowledge를 prompt로 직접 학습시키에는 GPT token limit에 걸림
따라서, 가장 관련 있는 UI information만 select해서 prompt로 바꿨음

  • 관련 있는 UI information을 select하는 방법

    • Instructor-XL 모델을 사용해서 simulated task와 current user task 사이의 cosine similarity를 계산함

    • sim(E(S),E(T))sim(E(S), E(T))
      (SS : simulated task, TT : current task)

    • Simulated task table에서 각 simulated task (SiS_i) 마다 해당하는 UI states와 UI elements를 검색해서 current task와 가장 비슷한 simulated task (SkS_k)를 찾아내는 거임

    • Online stage에서 current task의 UI가 simulated task의 UI state와 맞으면 이 UI state에서 어떤 UI element를 클릭해야하는지 알려줌 (원래는 random하게 explore했는데, 이렇게 되면 LLM이 element를 클릭하면 어떤 outcome이 나오는지 simulated task를 보고 이해하게됨!)

    • 이렇게 해서! app memory로부터 가장 관련있는 UI information에 대한 prompt만 augmentation 할 수 있는거임

      Instructor-XL
      Instruction-finetuned text embedding model

      • Fine-tuning없이 간단하게 task instruction을 제공하는 모델
  • ex. "Remove all the events in the calendar"

    • simulated task : "delete all events"를 보고 여러 UI element를 거쳐 target button을 찾아낼 수 있게됨
      (원래는 target button이 총 3번을 클릭해서 찾아낼 수 있는데, 이 simulated task를 통해서 총 3단계를 거쳐야한다는 것을 알고 있으므로 task를 실행할 수 있음!)

Tuning Local LLM with App-specific Data
AutoDroid는 판단 모델로 small local LLM(ex. Vicuna-7B)도 사용할 수 있음

  • 서버에서 GPT 모델을 쓰는게 아니라 offline-stage에서도 small LLM 모델을 써서 판단을 내릴 수 있음

    • cost-effective하지만, 정확성은 GPT보다 떨어짐
    • prompt augmentation에서도 최적은 아님
    • 따라서, small LLM 모델을 app-specific data로 fine-tuning해서 사용하기로 함!
  • High-quality의 학습 데이터(question, answer 쌍)을 구축하는 방법

    • question : task, previous UI action, current UI state에 대한 prompt
    • answer : action descroption prompt
    • interface UiU_i로부터 complete task SS로 transition하기 위해서 action AiA_i가 수행되어야하기 때문에, 이렇게 쌍을 구축함
  • Local LLM이 prompt를 통해 맞는 action을 고르도록 만들기 위해, Zero-shot Chain-of-Thought를 함

    • 즉, larger LLM이 reason을 만듬

      Zero-shot Chain-of-Thought
      모델이 사전 훈련 없이도 문제를 논리적이고 단계적인 사고 과정을 통해 해결할 수 있는 능력

  • Large LLM으로 부터 생성된 thinking, reasoning data를 학습하여 fine-tuning함으로써 Local small LLM도 large LLM의 reasoning 능력을 따라할 수 있게 만듬

Multi-granularity Query Optimization

AutoDroid는 LLM을 querying하면서 초기 데이터를 얻음
따라서, 각 task에 대한 LLM query를 줄이면 AutoDroid에 대한
Pruning Tokens by Merging Functionally Equivalent Elements

Code/Demo

Code : https://github.com/user1342/AutoDroid
My Demo : https://velog.io/@deepdiv/AutoDroid-2.-AutoDroid-실행

연구에 AutoDroid를 사용하는 목적

  • AutoDroid 정량 평가에 쓰인 Benchmark를 우리가 만든 LAM에 적용하여 AutoDroid와 성능 평가 가능
  • AutoDroid를 구현해보면서 취약점을 찾아 연구 방향성에 추가하기
  • AutoDroid는 서버에서 LLM을 연동하고, 우리 연구는 On-Device 내에서 LLM을 작동시킴
    • Online stage에서 수행하는 단계가 많은데 latency는 어느정도인지
    • On-device AI와 비교했을때, Privacy Filter가 민감한 개인정보를 완벽하게 filtering 할 수 있는지
  • 성능을 향상시킬 수 있는 여러 방법들을 제시하고 있으므로, 연구에서 사용해볼 수 있음

0개의 댓글