텍스트를 입력하기 전에 ChatGPT와 같은 LM(Transformer 언어 모델)의 프롬프트를 고려하세요.
매일 수백만 명의 사용자와 쿼리가 생성되는 ChatGPT는 자체 주의 메커니즘을 사용하여 프롬프트를 구현합니다. 반복되는 인코딩의 경우 시간과 메모리 복잡도는 입력 길이에 따라 2차적으로 증가합니다. 프롬프트의 변환기 활성화를 캐싱하면 부분적인 재계산이 방지되지만 이 전략은 캐시된 프롬프트 수가 증가함에 따라 여전히 상당한 메모리 및 저장 비용을 발생시킵니다. 대규모로 프롬프트 길이를 조금만 줄여도 계산, 메모리 및 저장 공간이 절약되는 동시에 사용자가 LM의 제한된 컨텍스트 창에 더 많은 콘텐츠를 넣을 수 있습니다.
그럼. 프롬프트 비용을 줄이는 방법은 무엇입니까? 일반적인 접근 방식은 매개변수 효율적인 적응 방법을 사용하여 프롬프트 없이 원래 모델과 유사하게 동작하도록 모델을 미세 조정하거나 정제하는 것입니다. 그러나 이 접근 방식의 근본적인 단점은 새로운 프롬프트에 대해 매번 모델을 재교육해야 한다는 것입니다(아래 그림 1의 중간 참조).
이 기사에서 스탠포드 대학의 연구자들은 임의의 프롬프트를 접두사 벌금과 유사한 더 작은 가상 "Gist" 토큰 세트로 압축하는 기스팅 모델(위 그림 1의 하단)을 제안했습니다. -튜닝. 하지만 접두사 미세 조정은 경사하강법을 통해 작업별로 접두어를 학습해야 하는 반면, Gisting은 메타학습 방법을 사용하여 각 작업에 대한 접두어를 학습하지 않고 프롬프트를 통해서만 Gist 접두어를 예측합니다. 이를 통해 작업별 접두사 학습 비용을 상각하여 추가 교육 없이 알 수 없는 지침에 대한 일반화가 가능합니다.
또한 "Gist" 토큰은 전체 프롬프트보다 훨씬 짧기 때문에 Gisting에서는 프롬프트를 압축, 캐시 및 재사용하여 계산 효율성을 향상시킬 수 있습니다.
논문 주소: https://arxiv.org/pdf/2304.08467v1.pdf
연구원들은 다음 모델을 따라야 하는 요점 지침을 배우는 매우 간단한 방법을 제안했습니다. 명령을 미세 조정하고 프롬프트 뒤에 gish 토큰을 삽입하십시오. 수정된 주의 마스크는 gist 토큰 뒤의 토큰이 gist 토큰 앞의 토큰을 참조하는 것을 방지합니다. 이를 통해 모델은 추가 훈련 비용 없이 즉각적인 압축과 그에 따른 지시를 동시에 학습할 수 있습니다.
디코더 전용(LLaMA-7B) 및 인코더-디코더(FLAN-T5-XXL) LM에서 gisting은 원래 모델과 유사한 출력 품질을 유지하면서 최대 26배의 즉각적인 압축을 달성합니다. 그 결과 추론 중 FLOP가 40% 감소하고 대기 시간이 4.2% 가속화되며 기존 프롬프트 캐싱 방법에 비해 스토리지 비용이 크게 절감됩니다.
연구원들은 먼저 지침 미세 조정의 맥락에서 gisting을 설명합니다. 데이터 세트 다음 명령의 경우 t는 자연어 프롬프트로 인코딩된 작업(예: 이를 프랑스어로 번역)을 나타내고, x는 작업의 (선택적) 입력(예: 고양이)을 나타내며, y는 원하는 출력( 예를 들어 르 채팅). 명령어 미세 조정의 목적은 t와 x를 연결한 다음 일반적으로 사전 훈련된 언어 모델이 자동 회귀적으로 y를 예측하도록 하여 분포 pLM(y | t,x)를 학습하는 것입니다. 추론 중에 새로운 작업 t와 입력 x를 사용하여 모델에서 메시지를 표시하고 디코딩하여 예측 결과를 얻을 수 있습니다.
그러나 t와 x를 연결하는 이러한 패턴에는 단점이 있습니다. Transformer 기반 LM은 아키텍처나 컴퓨팅 능력에 의해 제한되는 제한된 컨텍스트 창이 있습니다. 후자는 self-attention이 입력 길이에 따라 2차적으로 확장되기 때문에 해결하기가 특히 어렵습니다. 따라서 매우 긴 프롬프트, 특히 반복적으로 재사용되는 프롬프트는 계산상 비효율적입니다. 프롬프트 비용을 줄이기 위해 어떤 옵션을 사용할 수 있습니까?
간단한 접근 방식은 특정 작업 t에 대해 LM을 미세 조정하는 것입니다. 즉, 작업 t에서만 입력/출력 예제가 포함된 데이터 세트 가 주어지면 더 빠른 특수 을 배울 수 있습니다. t를 고려해야 합니다.
접두사/프롬프트 미세 조정 또는 어댑터와 같은 훨씬 더 좋고 매개변수 효율적인 미세 조정 방법은 전체 미세 조정보다 훨씬 저렴한 비용으로 동일한 목표를 달성할 수 있습니다. 그러나 문제는 여전히 남아 있습니다. 각 작업에 대한 모델 가중치의 적어도 일부를 저장해야 하며, 더 중요한 것은 각 작업 t에 대해 해당 입력/출력 쌍 데이터 세트 D^t를 수집하고 모델을 재교육해야 한다는 것입니다.
Gisting은 두 가지 비용, 즉 (1) t에 대해 p_LM을 조건화하는 추론 시간 비용, (2) 각 t에 대해 새로운 p^t_LM을 학습하는 훈련 시간 비용을 상각하는 다른 접근 방식입니다. 아이디어는 p_G(y | G(t),x)로부터의 추론이 p_LM(y|t,x)로부터의 추론보다 빠르도록 미세 조정 중에 t G(t)의 압축된 버전을 학습하는 것입니다.
LM 용어에서 G(t)는 t의 토큰보다 개수가 적지만 LM에서도 유사한 동작을 유발하는 "가상" Gist 토큰 집합입니다. 그런 다음 G(t)에 대한 변환기 활성화(예: 키 및 값 행렬)를 캐시하고 재사용하여 계산 효율성을 향상시킬 수 있습니다. 중요한 것은, 연구자들은 G가 보이지 않는 작업으로 일반화할 수 있기를 희망한다는 것입니다. 새로운 작업 t가 주어지면 해당 Gist 활성화 G(t)를 예측하고 추가 훈련 없이 사용할 수 있습니다.
Gisting의 일반적인 프레임워크는 위에 설명되었으며 다음에는 이러한 모델을 학습하는 매우 간단한 방법인 LM 자체를 Gist 예측 변수 G로 사용하는 방법을 살펴보겠습니다. 이는 LM의 기존 지식을 활용할 뿐만 아니라 표준 명령 미세 조정을 수행하고 Transformer attention 마스크를 수정하여 신속한 압축을 강화함으로써 학습을 가능하게 합니다. 즉, Gisting은 추가 교육 비용이 발생하지 않으며 표준 지침에 따라 미세 조정만 하면 됩니다!
구체적으로는 해당 모델에서 흔히 사용되는 문장 시작/끝 토큰과 유사하게 모델 어휘 및 임베딩 매트릭스에 특수 요지 토큰을 추가하세요. 그런 다음 주어진 (작업, 입력) 튜플(t, x)에 대해 (t, g_1, ..., g_k, x)의 k 연속 Gist 토큰 세트를 사용하여 t와 x를 함께 연결합니다(예: ). 이 시퀀스는 Gist 토큰 뒤의 입력 토큰이 이전 프롬프트 토큰을 참조할 수 없다는 제한 사항과 함께 모델에 제공됩니다(그러나 Gist 토큰은 참조할 수 있음). 이는 입력 x(출력 y)가 프롬프트 t를 처리할 수 없기 때문에 모델이 프롬프트의 정보를 gist 토큰으로 압축하도록 강제합니다.
아래 그림 2는 필요한 변경 사항을 보여줍니다. 일반적으로 자동 회귀 인과 주의 마스크를 사용하는 GPT-3 또는 LLaMA와 같은 디코더 전용 LM의 경우 그림 2a에 표시된 삼각형의 왼쪽 하단 모서리만 마스크하면 됩니다. 양방향 인코더와 자동 회귀 디코더가 있는 인코더-디코더 LM의 경우 두 가지 수정이 필요합니다(그림 2b 참조).
먼저 일반적으로 마스크가 없는 인코더에서는 프롬프트 토큰 t를 참조하여 입력 토큰 x를 차단합니다. 그러나 프롬프트 t 및 gist 토큰 g_i가 입력 토큰 x를 참조하는 것을 방지해야 합니다. 그렇지 않으면 인코더는 입력에 따라 다른 요점 표현을 학습하게 됩니다. 마지막으로 디코더는 디코더가 프롬프트 토큰 t를 참조하는 것을 방지해야 하는 교차 주의 기간을 제외하고는 정상적으로 작동합니다.
다양한 Gist 토큰 수에 대해 LLaMA-7B 및 FLAN-T5-XXL의 ROUGE-L 및 ChatGPT 평가 결과는 아래 그림 3과 같습니다.
모델은 일반적으로 k개의 gist 토큰에 민감하지 않습니다. 프롬프트를 단일 토큰으로 압축해도 성능이 크게 저하되지 않습니다. 실제로 어떤 경우에는 너무 많은 요지 토큰이 성능을 저하시키는 경우가 있습니다(예: LLaMA-7B, 10개의 요지 토큰). 이는 증가된 용량이 훈련 분포에 과적합하기 때문일 수 있습니다. 따라서 연구진은 아래 표 1에서 단일 토큰 모델의 구체적인 값을 제시하고, 나머지 실험에서는 단일 요점 모델을 사용한다.
본 지침에서 요지 모델은 LLaMA-7B FLANT5-에서 각각 48.6%와 48.6%의 승률로 해당 양성 제어 모델과 거의 동일한 ROUGE 및 ChatGPT 성능을 달성했습니다. XXL.50.8%. 여기서 연구자들이 가장 관심을 갖는 것은 보이지 않는 작업에 대한 일반화 능력이며, 이는 두 개의 다른 데이터 세트를 통해 측정되어야 합니다.
Alpaca+ 훈련 데이터 세트의 보이지 않는 프롬프트에서 우리는 요지 모델이 보이지 않는 프롬프트에 대해 강력한 일반화 능력을 가지고 있음을 알 수 있습니다. 즉, 대조군(FLAN-T5)에 비해 각각 49.7%(LLaMA) 및 46.2%가 승리했습니다. 비율. 가장 까다로운 OOD Human 분할에서 Gist 모델의 승률은 45.8%(LLaMA) 및 42.5%(FLANT5)로 약간 떨어집니다.
이 기사의 목적은 요지 모델이 원래 모델의 기능을 밀접하게 모방하도록 하는 것입니다. 따라서 요지 모델이 대조군과 정확히 구별되지 않는 경우가 언제인지 질문할 수 있습니다. 아래 그림 4는 이것이 얼마나 자주 발생하는지 보여줍니다. 보이는 작업(그러나 보이지 않는 입력)의 경우 요점 모델은 거의 절반의 시간 동안 통제 그룹과 동등합니다. 보이지 않는 작업의 경우 이 수치는 20~25%로 떨어집니다. OOD 휴먼 작업의 경우 이 수치는 다시 10%로 떨어집니다. 그럼에도 불구하고 요지 모델 출력의 품질은 매우 높습니다.
전반적으로 이러한 결과는 특히 LLaMA와 같은 훈련 분포 외부의 일부 프롬프트에서도 요점 모델이 프롬프트를 안정적으로 압축할 수 있음을 보여줍니다. 이러한 디코더 전용 인과 LM. FLAN-T5와 같은 인코더-디코더 모델의 성능은 약간 더 나쁩니다. 한 가지 가능한 이유는 gist 마스크가 인코더의 양방향 주의 흐름을 억제하기 때문입니다. 이는 자동 회귀 디코더에서 기록의 일부를 마스킹하는 것보다 더 어렵습니다. 앞으로 이 가설을 조사하기 위해서는 추가 작업이 필요합니다.
마지막으로 이 작업의 핵심 동기 중 하나로 돌아가서: Gisting은 어떤 종류의 효율성 향상을 가져올 수 있습니까?
아래 표 2는 PyTorch 2.0 분석기를 사용하여 모델의 단일 정방향 전달(즉, 단일 입력 토큰을 사용한 자동 회귀 디코딩의 한 단계) 결과를 보여주며, 인간 평가 분할 값의 252개 명령에 대한 평균입니다. Gist 캐싱은 최적화되지 않은 모델에 비해 효율성을 크게 향상시킵니다. 두 모델 모두에서 FLOP가 40% 절감되고 클럭 시간이 4~7% 단축되었습니다. ㅋㅋㅋ 절대 위치 임베딩 또는 GPU VRAM. 특히 LLaMA-7B의 경우 KV 캐시의 각 토큰에는 1.05MB의 저장 공간이 필요합니다. KV 캐시는 테스트된 프롬프트 길이에서 LLaMA-7B 추론에 필요한 총 메모리에 비해 거의 기여하지 않지만 개발자가 다수의 사용자에 걸쳐 많은 프롬프트를 캐시하고 스토리지 비용이 빠르게 증가할 수 있는 시나리오가 점점 더 일반화되고 있습니다. 동일한 저장 공간으로 Gist 캐시는 전체 명령어 캐시보다 26배 더 많은 프롬프트를 제공할 수 있습니다.
위 내용은 26개의 토큰을 1개의 새로운 방법으로 압축하여 ChatGPT 입력 상자의 공간을 대폭 절약합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!