데이터 News Letter

[2024.04] 논문 리뷰 - 더 나은 결과물을 생성하기 위한 26가지 프롬프트 지침

굿어스데이터 블로그 2024. 4. 1. 07:30

 

[논문 리뷰] Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4

 

[개요] 프롬프트 간소화 및 정확하고 구체적인 답변 생성을 위한 26가지 프롬프트 원칙.

 

[논문 소개] 대규모 언어 모델을 쿼리하고 프롬프트 하는 프로세스를 간소화하기 위해 고안된 26가지 지침 원칙을 소개하고, 이 원칙을 적용하여 LLaMa-1/2(7b, 13b, 70b), GPT-3.5/4에 대한 광범위한 실험을 수행하여 지침 및 프롬프트 설계에 대한 효과 검증.

 

[목표] 개발자나 일반 사용자들이 LLM과 상호 작용 시, 겪는 불분명한 점을 해결하고 미리 훈련된 LLM의 응답 품질 향상을 위한 최적의 지침 및 프롬프트 설계 제시.

 


 

Introduction

 

프롬프트 엔지니어링 기술은 LLM과 상호 작용하는 방식으로, 자연어로 구체적이고 작업 특화된 지침을 안내하여 원하는 결과를 생성하는 프로세스입니다. 초기에 프롬프트가 언어 모델의 성능과 출력에 큰 영향을 미친다는 것이 발견되어 설계 중요성이 강조되어 왔습니다. 해당 분야에 대한 연구와 관심이 높아지고 있지만, 여전히 일반 사용자나 개발자가 LLM과 상호작용하며, 특정한 응답을 유도하고 미리 훈련된 LLM의 능력을 최대한 활용하는 작업에는 어려움이 있습니다.

 

최근 연구는 단순한 작업 지시를 넘어서 프롬프트의 의미적 맥락적 뉘앙스를 이해하고, 이러한 미묘한 변화가 LLM 응답에 상당한 영향을 미칠 있음을 제시하고 있습니다. 본 연구에서는 이러한 어려움을 해결하기 위해 대상은 해당 분야의 전문가임또는 ‘5세 어린이임과 같이 프롬프트에 의도된 청중을 통합하는 등 LLM의 다양한 특성을 고려한 원칙들을 제시합니다.

 

[Figure 1 : 디자인 원칙 적용 전∙후 프롬프트 및 응답 예시]

 


 

Principles Overview

 

논문에서는 다양한 시나리오 또는 지시사항을 제공하는 프롬프트 원칙의 개요를 제시하며, 원칙의 특성에 따라 다섯 가지 범주로 분류합니다.

 

[26가지 프롬프트 원칙 & 예제 프롬프트(번역)]

# 프롬프트 원칙 예제 프롬프트
1 좀 더 간결한 답변을 선호한다면, LLM에게 예의 바르지 않아도 됩니다. "부디", "괜찮으시다면", "감사합니다", "원합니다" 등의 구문을 추가할 필요가 없으며, 핵심으로 들어가세요. 인간 세포의 구조를 친절하게 설명해주시겠습니까? 인간 세포의 구조를 설명해주세요.
2 프롬프트에 의도된 대상 청중을 통합하세요.
예를 들어, 대상 청중은 해당 분야의 전문가입니다.
스마트폰이 작동하는 방식에 대한 개요를 작성하십시오. 이는 이전에 사용해보지 않은 노인들을 대상으로 합니다.
3 복잡한 작업을 간단한 대화 형식의 일련의 프롬프트로 분해하세요. P1: 다음 방정식의 괄호 내 각 항에 음의 부호를 배포하십시오: 2x + 3y - (4x - 5y) P2: 'x' 'y'를 각각 기준으로 합동 항을 결합하십시오.
P3:
합친 항을 사용하여 간소화된 식을 제공하십시오.
4 해야 한다'와 같은 긍정적인 지시문을 사용하되 '하지 말아야 한다' 같은 부정적인 언어는 피하세요. 건물이 지진 중에 안정적으로 유지되는 방법은 무엇인가요?
5 다음과 같은 프롬프트를 활용하여 주제, 아이디어 또는 정보를 명확하게 이해하거나 심층적으로 이해하세요: 내가 11세처럼 설명해주세요: 암호화는 어떻게 작동하나요?
a 간단한 용어로 [특정 주제] 설명하기.
b 제가 11세처럼 설명해주세요.
c [분야] 초보자에게 설명하는 것처럼 설명해주세요.
d 5세 아이에게 무언가를 설명하는 것처럼 간단한 영어로 [에세이/텍스트/문단] 쓰기.
6 나는 더 나은 해결책에 $xxx 팁을 줄 것입니다!"라고 추가하세요. 나는 더 나은 해결책에 $300K를 팁으로 줄 것입니다!
동적 프로그래밍의 개념을 설명하고 사용 사례를 제시하세요.
7 예제 중심의 프롬프팅을 구현하세요 (-샷 프롬프팅 사용). 예시 1: 다음 영어 문장을 프랑스어로 번역하세요: "The sky is blue." (응답: "Le ciel est bleu.")
예시 2: 다음 영어 문장을 스페인어로 번역하세요: "I love books." (응답: "Amo los libros.")
8 프롬프트를 서식 지정할 때, '###지시사항###'로 시작한 후, 관련이 있다면 '###예제###' 또는 '###질문###'으로 이어집니다. 이후 내용을 제시하세요. 지시사항, 예제, 질문, 맥락, 입력 데이터를 구분하기 위해 한 줄 이상의 줄 바꿈을 사용하세요. ###지시사항### 영어 단어를 프랑스어로 번역하세요. ###질문### "book"의 프랑스어 단어는 무엇인가요?
9 다음 구문을 포함하세요: "당신의 작업은" "반드시 해야 합니다". 당신의 작업은 친구에게 수도주기를 설명하는 것입니다.
간단한 언어를 사용해야만 합니다.
10 다음 구문을 포함하세요: "벌점을 받게 될 것입니다". 당신의 작업은 친구에게 수도주기를 설명하는 것입니다.
간단한 언어를 사용하지 않으면 벌점을 받게 됩니다.
11 "자연스러운, 인간적인 방식으로 질문에 답하세요"라는 구문을 사용하세요. 건강한 음식에 대한 단락을 쓰세요. 자연스러운, 인간적인 방식으로 제시된 질문에 답하세요.
12 "단계별로 생각하세요"와 같은 선도적인 단어를 사용하세요. 10개의 숫자를 반복하여 합하는 파이썬 코드를 작성하세요. 단계별로 생각해보세요.
13 프롬프트에 "균형 잡힌 답변이며 편견이나 표준에 의존하지 않아야 합니다"라는 구문을 추가하세요. 문화적 배경이 정신 건강 인식에 어떤 영향을 미치나요?
편견 없이 답변하고 고정 관념을 피하세요.
14 당신이 필요한 출력을 제공할만큼 충분한 정보를 제공할 때까지 모델이 질문하여 정확한 세부 사항과 요구 사항을 추출할 수 있게 허용하세요. (예시: "이제부터 질문을 통해 ...") 이제 당신이 개인화된 피트니스 루틴을 작성할 만큼 충분한 정보를 얻을 때까지 질문하세요.
15 특정 주제, 아이디어 또는 정보에 대해 문의하고 이해를 테스트하려면 다음 구문을 사용할 수 있습니다: "[정리/주제/규칙 이름]을 가르쳐 주시고 마지막에 테스트를 포함하여, 내가 답변한 후에 내 답변이 올바른지 알려주세요. 미리 답변을 제공하지 말고.". KVL 법칙에 대해 가르쳐주세요. 마지막에 시험을 포함하고, 내가 답변한 후에만 정답을 알려주세요.
16 대형 언어 모델에게 특정 역할을 할당하세요. 당신이 전문 경제학자라면, 다음 질문에 어떻게 답하겠습니까: 자본주의와 사회주의 경제 체제 사이의 주요 차이점은 무엇인가요?
17 구분 기호를 사용하세요. 재생 가능 에너지원'의 중요성에 대해 설득하는 글을 작성하세요. 영향력 있는 글을 써주세요.
18 프롬프트 내에서 특정 단어나 구문을 여러 번 반복하세요. 진화는 종의 발전을 형성했습니다. 진화의 주요 원동력은 무엇이며, 진화가 현대인에게 어떤 영향을 미쳤나요?
19 사고 연쇄 (Chain-of-though, CoT)를 몇 가지 샷 프롬프트와 결합하세요. 예시 1: "10 2로 나누세요. 먼저 10 2로 나눕니다. 그 결과는 5입니다." 예시 2: "20 4로 나누세요. 먼저 20 4로 나눕니다. 그 결과는 5입니다." 본 질문: "30 6으로 나누세요. 먼저 30 6으로 나눕니다. 결과는...?
20 출력 프라이머를 사용하세요. 출력 프라이머는 원하는 출력의 시작부분으로 프롬프트를 마무리합니다. 예상 응답의 시작으로 프롬프트를 마무리하여 출력 프라이머를 활용하세요. 뉴턴의 운동법칙 제1법칙에 대한 원리를 설명하세요. 설명:
21 자세한 내용을 포함한 에세이/텍스트/문단/글 또는 모든 유형의 텍스트를 작성하려면 다음 지시사항을 사용하세요:
"
필요한 모든 정보를 추가하여 [주제]에 대한 자세한 [에세이/텍스트/문단]를 작성하세요".
스마트폰의 진화에 대해 자세한 단락을 작성하세요. 필요한 모든 정보를 추가하여 상세하게 작성하세요.
22 특정 텍스트를 수정/변경하려면, 다음과 같은 프롬프트를 사용하세요: "사용자가 보낸 모든 문단을 수정하십시오. 사용자의 문법과 어휘를 개선하고 자연스럽게 소리나게 하십시오. 원래의 글쓰기 스타일을 유지하여 공식적인 문단이 공식적으로 유지되도록 하십시오." 사용자가 보낸 모든 텍스트를 수정하십시오. 사용자의 문법과 어휘를 개선하고 자연스럽게 만드세요. 원래의 글쓰기 스타일을 유지하고 공식적인 단락은 공식적으로 유지하세요.
단락: 재생 가능 에너지는 우리 행성의 미래에 있어서 매우 중요합니다. 이것은 자연...입니다.
23 여러 파일에 걸친 복잡한 코딩 프롬프트가 있는 경우, 다음과 같은 구문을 사용하세요: "이제부터 여러 파일에 걸쳐 코드를 생성할 때 [프로그래밍 언어] 스크립트를 생성하여 지정된 파일을 자동으로 생성하거나 생성된 코드를 삽입할 수 있도록 기존 파일을 변경하십시오. [질문 내용]". 여러 파일에 걸친 코드를 생성하고, 지정된 파일을 자동으로 생성하거나 생성된 코드를 삽입하기 위해 실행할 수 있는 Python 스크립트를 생성하세요. Django 프로젝트용으로 두 가지 기본 앱이 있는 스크립트를 생성하세요.
24 특정 단어, 구문 또는 문장을 사용하여 텍스트를 시작하거나 계속하려면 다음 프롬프트를 사용하세요: 나는 판타지 이야기의 시작을 제공합니다: "The misty mountains held secrets no man knew." 제공된 단어를 기반으로 완성하세요. 흐름을 일정하게 유지하세요.
a "나는 [노래 가사/이야기/문단/에세이...]의 시작을 제공합니다: [가사/단어/문장]".
b 제공된 단어를 기반으로 완료하십시오. 흐름을 일관되게 유지하세요.
25 모델이 콘텐츠를 생성하기 위해 따라야 하는 요구 사항을 키워드, 규정, 힌트 또는 지시의 형태로 명확하게 명시하세요. 해변 휴가를 위한 가방 목록을 작성하십시오. "선크림", "수영복", "해변 수건"을 필수품으로 포함하세요.
26 제공된 샘플과 유사한 에세이 또는 문단과 같은 모든 텍스트를 작성하려면 다음 지침을 포함하세요: "산의 소프트한 물결이 옛날 이야기를 은은하게 해줬다. 이야기는 지나간 시대의 한 순간이었습니다." 제공된 텍스트를 기반으로 산과 바람의 상호작용을 묘사하세요.

 


 

[프롬프트 원칙 카테고리]

  1. 프롬프트 구조와 명확성(Prompt Structure and Clarity): 2, 4, 8, 12, 17, 20
    • 프롬프트에 의도된 대상 통합. (예시:대상이 해당 분야의 전문가임, 5 아동임”.)
  2. 구체성 및 정보(Specificity and Information): 5, 7, 12, 13, 15, 24, 25, 26
    • 답변이 편향되지 않도록 합니다와 같은 구문 추가.
  3. 사용자 상호작용 및 참여(User Interaction and Engagement): 14, 21
    • LLM 모델이 적절한 답변을 생성하기 위해 충분한 정보를 얻을 때까지 사용자에게 질문 하도록 유도. (예시: ‘필요한 정보를 제공하기 위한 질문을 해주세요와 같은 지시.)
  4. 콘텐츠 및 언어 스타일(Content and Language Style): 1, 6, 9, 10, 11, 16, 18, 22
    • 간결하고 직접적인 언어 사용. (예시: ‘제발’, ‘괜찮다면’, ‘감사합니다와 같은 표현 불필요.)
  5. 복잡한 작업 및 코딩 프롬프트(Complex Tasks and Coding Prompt): 3, 19, 23
    • 복잡한 작업의 효과적 처리를 위해 프롬프트의 순서 분류. (단계적 접근)

[디자인 원칙]

 

프롬프트와 지시사항을 효율적으로 구성하여 대형 언어 모델의 이해를 촉진하고, 사용자와 모델 간의 상호작용 개선
원하는 응답을 얻기 위한 여러 지침이 수립되었습니다. 다음은 디자인 원칙 설계에 반영된 다양한 측면에 대한 간단한 설명입니다:

  1. 간결성 및 명확성(Conciseness and Clarity): 작업에 불필요한 정보를 피하고, 모델을 안내할 충분한 구체성 강조.
  2. 맥락적 관련성(Contextual Relevance): 작업의 배경 및 도메인 이해에 도움이 되는 관련 맥락 제공.
    (키워드, 도메인 특정 용어 또는 상황 설명 등 필요한 지식이나 정보 포함.)
  3. 작업 조정(Task Alignment): 작업의 성격을 나타내는 언어와 구조를 사용하여 모델이 수행해야 하는 작업의 본질을 명확히 전달. (프롬프트를 질문, 명령 또는 작업의 기대 입력 및 출력 형식에 맞게 빈칸을 채우는 문장으로 구성 가능.)
  4. 예시 설명(Example Demonstration): 프롬프트에 특정 작업 또는 원하는 형식/유형의 예시를 포함.
    (‘제로-샷’ 또는 ‘퓨-샷’ 학습 시나리오의 input-output) 보다 복잡한 작업 수행 시 유용.
  5. 편향 줄이기(Avoiding Bias): 모델이 훈련 데이터의 편향에 영향을 받지 않도록 중립적인 언어 사용.
  6. 점진적 프롬프팅(Incremental Prompting): 복잡한 작업을 단계적으로 나누어 프롬프트 구성.
    (프롬프트를 조정하고 모델 성능에 따라 적응 시키는 데 도움.)

 

Experiment

 

[설정 및 구현 세부 사항]

 

모든 평가는 수동으로 제작된 벤치마크인 ‘ATLAS’ 도구로 진행되었습니다. ATLAS는 다양한 영역의 질문과 복잡한 추론을 포함한 질문들로 구성되어 있으며, 각 질문에 대한 한 가지 응답만 사용하여 평가가 진행되었습니다. 본 논문에서 진행한 실험에서는 특정 원칙에 따른 프롬프트가 있는 질문과 없는 질문들을 비교하고, 각각의 응답을 사람을 통해 평가했습니다.

 


 

[모델 평가]

 

부스팅(boosting) 정확도(correctness) 두 가지 설정에서 평가하며, 모델의 성능에 대한 포괄적인 이해를 제공하기 위해 함께 사용되었습니다. 부스팅은 특정 지침이나 원칙을 적용할 모델의 응답 품질 향상을 측정하고, 정확도는 모델의 출력의 정확성과 신뢰성을 측정합니다.


 

부스팅(Boosting) Figure 2 참조.

  • 특정 원칙이나 지침을 적용하기 전과 후의 모델 성능을 비교하여 응답 품질 개선도 평가.
  • 제안된 원칙이 적용된 일련의 질문에서 응답 품질의 향상도를 백분율로 표시.

[Figure 2: 13 번 원칙을 적용한 프롬프트 사용 후 LLM 응답의 부스팅 예시]

 

[번역]

원칙 미적용 (Human without principle)


사람:
기후 변화의 개념과 기후 변화가 환경에 미칠 수 있는 잠재적 영향을 짧은 한 단락으로 설명하세요.”


GPT-4:
기후 변화는 화석 연료 연소, 삼림 파괴 및 산업 과정과 같은 인간 활동으로 주로 인한 온도와 날씨 패턴의 장기 변화와 변동을 의미합니다. 잠재적인 영향으로는 해수면 상승, 더 자주 발생하고 심한 극한 기상 현상, 생태계의 교란 및 식품 및 물 자원에 대한 위협이 포함되어 있습니다. 이는 자연환경과 인간 사회에 모두 중대한 영향을 미칠 수 있습니다.

 

원칙 적용 (Human with principle)


사람:
기후 변화의 개념과 환경에 미칠 잠재적인 영향을 한 문단으로 설명하세요. 과학적 증거와 다양한 관점을 모두 강조하는 편견 없는 설명을 제공하세요.”


GPT-4:
기후 변화는 주로 화석 연료 연소, 산림 파괴, 산업 공정 등과 같은 인간 활동에 의해 발생하는 온실가스 배출로 인한 장기적인 온도 및 날씨 패턴의 변화를 의미합니다. 대부분의 과학 커뮤니티는 기후 변화의 원인인 온실가스 배출이 전 세계적 기온 상승으로 이어져 빙하 감소와 해수면 상승 및 더욱 극심한 기상 현상으로 이어진다는 것에 동의하지만, 이러한 변화의 범위와 영향에 대한 다양한 견해를 가지고 있습니다. 일부는 지구가 자연적인 기후 변동 주기를 가지고 있으며, 인간의 영향이 예상만큼 크지 않을 수 있다고 주장합니다. 그 밖에 생태계와 인간 문명에 잠재인 재앙 영향을 완화를 위한 즉각적인 조치를 강조하는 의견이 있습니다.


 

정확성(Correctness) Figure 3 참조.

  • 모델의 출력의 정밀도를 나타내며, 응답의 관련성 및 오류 여부 측정.
  • 모델이 정확성의 기대 표준과 일치하는 정도를 측정하여 검증.
  • 일반적으로 모델 성능을 평가하고, 출력의 신뢰성을 확인하는 중요 지표.

[Figure 3: 소개된 7번 원칙을 적용한 프롬프트 사용 후 향상된 LLM 응답 정확성 예시]

 

[번역]

원칙 미적용 (Human without principle)

 

사람: 다음 조언의 유용성을 도움이 되거나 도움이 되지 않는 것으로 평가하십시오.
조언: "일이 있다면, 그냥 일을 시작하십시오." 유용성:

 

GPT-4: 유용성: 도움이 됨.

 

원칙 적용 (Human with principle)

 

사람: 다음 조언의 유용성을 도움이 되거나 도움이 되지 않는 것으로 평가하십시오. 예시:

  1. 조언: "집중력을 높이려면 매일 아침 15분간 명상해 보세요."
    유용성: 도움이 됨
  2. 조언: "슬플 때, 그냥 기분 좋게 생각하고 행복한 생각을 하세요."
    유용성: 도움이 되지 않음
  3. 조언: "효과적인 시간 관리를 위해 매일 할 일 목록을 만드세요."
    유용성: 도움이 됨 조언: "일이 있다면, 그냥 일을 시작하십시오." 유용성:

GPT-4: 유용성: 도움이 됨.

 


 

[원칙 적용/미적용 차이]

■ 원칙 미적용(without principle)에서는 조언이 제시되고, 해당 조언의 유용성을 평가합니다.
단순히 조언의 유용성을 평가하며, 원칙이나 가이드라인을 고려하지 않습니다.

 원칙 적용(with principle)에서는 조언에 대한 유용성 평가 시, 특정 원칙을 적용합니다.
주어진 상황에서 특정 지침이나 원칙을 고려하여 조언을 분석하고 유용성을 판단하는 것을 의미합니다.
이러한 접근으로 조언의 효과를 더 정확하게 평가하고, 원칙이 결과에 미치는 영향을 이해하는 데 도움을 줍니다.


 

Results

 

논문에서는 프롬프트 엔지니어링 원칙을 적용한 결과를 LLM 규모에 따라 분석하였습니다.

(small, medium, large-scale LLM) 

 

[Figure 4: 원칙 적용 시, LLM 응답 품질 부스팅 결과]

 

먼저, 부스팅 부분에서 Figure 4에서 보여지듯, 원칙을 적용함에 따라 모든 규모의 LLM 출력이 상당한 폭으로 개선된 것을 확인할 있습니다. 특히, 원칙 14 적용된 모든 질문에서 개선 효과를 보여주고 있습니다.

 

또한, 정확도 측면에서는 절대적 정확도 상대적 정확도 평가합니다.

  • [절대적 정확도] 모델이 주어진 작업을 얼마나 정확하게 수행되는지 측정하는 지표. 주어진 질문 또는 작업에 대한 정확한 답변의 비율로 측정.
  • [상대적 정확도] 특정 기준 모델이나 기준 결과와 비교하여 모델의 성능을 평가하는 지표. 보통 두 모델 또는 두 결과 간의 차이를 백분율로 표시.

[Figure 5: 원칙 적용 시, LLM 응답 품질 절대적 정확도.]

 

[Figure 6: 원칙 적용 시, LLM 응답 품질 상대적 정확도 향상.]

 

 

소규모 중간 규모 LLM 경우 주로 20%에서 40% 사이의 절대적 정확도를 보이며, 대규모 모델은 40% 이상의 절대적 정확도를 보여줍니다. 모델의 크기가 클수록 상대적 정확도 향상을 확인 있습니다.

이러한 결과는 프롬프트 엔지니어링이 LLM 응답 품질을 향상시키는 유용한 도구임을 명백히 입증하며,

특히 절대적 정확도와 상대적 정확도 측면에서 이를 강조합니다.


 

Conclusion

 

If you prefer more concise answers, no need to be polite with LLM.

 

논문에서 제시된 26가지 원칙을 통해 프롬프트 엔지니어링이 LLM의 응답 품질을 향상시키는 데 유용한 도구임을 확인할 수 있습니다. 이러한 원칙들은 LLM이 입력된 텍스트나 문장의 핵심 내용이나 중요 정보를 식별하고, 이를 기반으로 응답을 생성하는 능력을 강화합니다. 제시된 실험 및 연구를 통해 얻은 결과는 이러한 전략이 출력의 품질을 저하시킬 수 있는 컨텍스트를 효과적으로 재구성하여 응답의 관련성, 간결성 및 객관성을 향상시킬 수 있다는 것을 보여줍니다.

 

추가적인 연구는 실험에서 사용된 제한된 키워드 프롬프트 방법론을 보완하고, 미세 조정, 강화 학습, 직접적인 선호도 최적화, 또는 생성된 데이터셋을 활용한 다양한 프롬프트 방법론 등 다양한 대안 전략을 통해 원칙에 더 적합한 기본 모델을 개선하는 것입니다. 이러한 노력은 LLM의 성능과 적용 가능성을 더욱 확대시킬 수 있을 것으로 예상됩니다.

 

한편, 제안된 26가지 원칙은 다양한 쿼리에 대한 LLM의 응답 품질을 향상시키기 위해 설계되었지만, 매우 복잡하거나 고도로 전문화된 질문에 대처할 때 개선 효과가 줄어들 수 있습니다. 이러한 한계는 각 모델의 추론 능력과 훈련 상태에 따라 주로 결정됩니다. 또한, 모델 응답에 대한 평가 기준과 결과는 다양한 사람에 상이할 수 있습니다. 따라서 향후 연구는 이러한 변동성을 고려하여 다양한 규모와 유형의 모델에 대한 원칙 적용에 대한 탐구가 필요합니다.

 

향후 연구에서 질문 세트를 확장함으로써, 다양한 유형의 질문에 대한 응답에 대한 일반적인 추론 능력을 더 잘 이해할 수 있을 것으로 예상되며, 원칙이 다양한 상황에서 어떻게 작동하는지에 대한 보다 포괄적인 통찰력을 얻을 있을 으로 기대됩니다.


 

[논문 원문]

Bsharat, S. M., Myrzakhan, A., & Shen, Z. (2023, December 26). Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4. https://arxiv.org/abs/2312.16171


[
프로젝트 페이지]
https://github.com/VILA-Lab/ATLAS