


대규모 언어 모델에서 흔히 사용되는 RoPE를 인코딩하는 회전 위치 인코딩에 대한 자세한 설명: 왜 절대 위치 인코딩이나 상대 위치 인코딩보다 나은가요?
2017년에 출판된 "Attention Is All You Need" 논문 이후 Transformer 아키텍처는 자연어 처리(NLP) 분야의 초석이 되었습니다. 디자인은 수년 동안 크게 변하지 않았으며, 2022년에는 RoPE(로터리 위치 인코딩)가 도입되면서 이 분야에서 큰 발전이 이루어졌습니다.
회전 위치 임베딩은 가장 발전된 NLP 위치 임베딩 기술입니다. Llama, Llama2, PaLM 및 CodeGen과 같은 가장 널리 사용되는 대규모 언어 모델에서는 이미 이를 사용하고 있습니다. 이 글에서는 회전 위치 인코딩이 무엇인지, 절대 위치 임베딩과 상대 위치 임베딩의 장점을 어떻게 깔끔하게 혼합하는지 자세히 살펴보겠습니다.
위치 인코딩의 필요성
RoPE의 중요성을 이해하기 위해 먼저 위치 인코딩이 왜 중요한지 검토해 보겠습니다. Transformer 모델은 고유 설계에 따라 입력 토큰의 순서를 고려하지 않습니다.
예를 들어, "개가 돼지를 쫓는다", "돼지가 개를 쫓는다"와 같은 문구는 의미는 다르지만 순서가 지정되지 않은 토큰 세트로 간주되므로 구별할 수 없는 것으로 간주됩니다.시퀀스 정보와 그 의미를 유지하려면 위치 정보를 모델에 통합하는 표현이 필요합니다.
절대 위치 인코딩
문장의 위치를 인코딩하려면 각 벡터가 문장의 위치를 나타내는 동일한 차원의 벡터를 사용하는 또 다른 도구가 필요합니다. 예를 들어 문장의 두 번째 단어에 대한 특정 벡터를 지정합니다. 따라서 각 문장 위치에는 고유한 벡터가 있습니다. 그런 다음 Transformer 계층에 대한 입력은 단어 임베딩과 해당 위치의 임베딩을 결합하여 형성됩니다.
이러한 임베딩을 생성하는 두 가지 주요 방법이 있습니다.
- 데이터에서 학습: 여기서 위치 벡터는 다른 모델 매개변수와 마찬가지로 학습 중에 학습됩니다. 각 위치(예: 1부터 512까지)에 대한 고유한 벡터를 학습합니다. 이로 인해 제한이 발생합니다. 최대 시퀀스 길이가 제한됩니다. 모델이 위치 512만 학습하는 경우 해당 위치보다 긴 시퀀스를 나타낼 수 없습니다.
- 사인 함수: 이 방법에는 사인 함수를 사용하여 각 위치에 대한 고유한 임베딩을 구축하는 방법이 포함됩니다. 이 구성의 세부 사항은 복잡하지만 기본적으로 시퀀스의 각 위치에 대해 고유한 위치 임베딩을 제공합니다. 경험적 연구에 따르면 데이터에서 사인 함수를 학습하고 사용하면 실제 모델에서 비슷한 성능을 제공할 수 있습니다.
절대 위치 인코딩의 한계
널리 사용되지만 절대 위치 임베딩에는 단점이 없는 것은 아닙니다.
- 제한된 시퀀스 길이: 위에서 언급했듯이 모델이 특정 지점까지 학습하는 경우 A 위치 벡터는 본질적으로 이 제한을 넘어서는 위치를 나타낼 수 없습니다.
- 위치 삽입의 독립성: 각 위치 삽입은 다른 위치 삽입과 독립적입니다. 이는 모델 관점에서 볼 때 위치 1과 위치 2의 차이가 위치 2와 500의 차이와 동일하다는 것을 의미합니다. 그러나 실제로 위치 1과 2는 상당히 멀리 떨어져 있는 위치 500보다 더 밀접하게 관련되어 있어야 합니다. 이러한 상대적 위치 지정이 부족하면 모델이 언어 구조의 뉘앙스를 이해하는 능력이 저하될 수 있습니다.
상대 위치 인코딩
상대 위치는 문장 내 음표의 절대 위치가 아니라 음표 쌍 사이의 거리에 초점을 맞춥니다. 이 방법은 위치 벡터를 단어 벡터에 직접 추가하지 않습니다. 대신, 상대 위치 정보를 통합하도록 주의 메커니즘이 변경됩니다.
T5(Text-to-Text Transfer Transformer)는 상대 위치 임베딩을 활용하는 유명한 모델입니다. T5는 위치 정보를 처리하는 미묘한 방법을 도입합니다.
- 위치 오프셋에 대한 바이어스: T5는 바이어스(부동 소수점 수)를 사용하여 가능한 각 위치 오프셋을 나타냅니다. 예를 들어 편향 B1은 문장에서의 절대 위치에 관계없이 한 위치 떨어져 있는 두 토큰 사이의 상대적 거리를 나타낼 수 있습니다.
- Self-Attention 레이어의 통합: 이 상대 위치 편향 행렬은 Self-Attention 레이어의 쿼리 행렬과 키 행렬의 곱에 추가됩니다. 이렇게 하면 시퀀스의 위치에 관계없이 동일한 상대 거리에 있는 마커가 항상 동일한 바이어스로 표시됩니다.
- 확장성: 이 접근 방식의 중요한 장점은 확장성입니다. 임의의 긴 시퀀스로 확장될 수 있으며 이는 절대 위치 임베딩에 비해 확실한 이점이 있습니다.
상대 위치 인코딩의 제한 사항
이론적으로는 매력적이지만 상대 위치 인코딩은 매우 문제가 많습니다.
- 계산적으로 비효율적입니다. 쌍 위치 인코딩 행렬을 만든 다음 각 시간 단계 상대 위치 인코딩을 얻기 위해 많은 수의 텐서 연산을 수행해야 합니다. 특히 더 긴 시퀀스의 경우. 이는 주로 위치 행렬이 쿼리 키 행렬에 추가되는 self-attention 레이어의 추가 계산 단계 때문입니다.
- 키-값 캐시 사용의 복잡성: 각 추가 토큰이 다른 모든 토큰의 포함을 변경하므로 Transformer에서 키-값 캐시의 효과적인 사용이 복잡해집니다. KV 캐시를 사용하기 위한 한 가지 요구 사항은 새 단어를 생성할 때 이미 생성된 단어의 위치 인코딩이 변경되지 않는다는 것입니다(절대 위치 인코딩 제공). 따라서 각 토큰의 포함이 새로운 변경마다 변경되므로 상대 위치 인코딩은 추론에 적합하지 않습니다. 시간 단계로.
이러한 엔지니어링 복잡성으로 인해 위치 인코딩은 특히 대규모 언어 모델에서 널리 채택되지 않았습니다.
RoPE(회전 위치 인코딩)?
RoPE는 위치 정보를 인코딩하는 새로운 방식을 나타냅니다. 전통적인 방법의 절대법과 상대법 모두에는 한계가 있습니다. 절대 위치 인코딩은 각 위치에 고유한 벡터를 할당합니다. 이는 간단하지만 확장이 잘 되지 않으며 상대 위치를 효과적으로 캡처할 수 없습니다. 상대 위치 인코딩은 마커 간의 거리에 초점을 맞추고 마커 관계에 대한 모델의 이해를 향상시키지만 모델 아키텍처를 복잡하게 만듭니다. .
RoPE는 두 가지 장점을 교묘하게 결합합니다. 모델이 마커의 절대 위치와 상대 거리를 이해할 수 있도록 위치 정보를 인코딩합니다. 이는 시퀀스의 각 위치가 임베딩 공간의 회전으로 표시되는 회전 메커니즘을 통해 달성됩니다. RoPE의 우아함은 모델이 언어 구문과 의미의 뉘앙스를 더 잘 이해할 수 있도록 하는 단순성과 효율성에 있습니다.
회전행렬은 우리가 고등학교 때 배운 사인과 코사인의 삼각법적 성질에서 파생된 것인데, 2차원 행렬을 이용하면 아래와 같은 회전행렬의 이론을 얻기에 충분할 것입니다!
위 이미지에서 "r"로 표시된 것처럼 회전 행렬이 원래 벡터의 크기(또는 길이)를 유지하는 것을 볼 수 있습니다. 변경되는 유일한 것은 x축과의 각도입니다.
RoPE는 새로운 컨셉을 선보입니다. 위치 벡터를 추가하는 대신 단어 벡터에 회전을 적용합니다. 회전 각도(θ)는 문장에서 단어의 위치에 비례합니다. 첫 번째 위치의 벡터는 θ만큼 회전되고, 두 번째 위치의 벡터는 2θ만큼 회전되는 식입니다. 이 접근 방식에는 여러 가지 이점이 있습니다.
- 벡터의 안정성: 문장 끝에 마커를 추가해도 시작 단어의 벡터에는 영향을 주지 않으므로 효율적인 캐싱에 도움이 됩니다.
- 상대 위치 보존: 두 단어가 서로 다른 문맥에서 동일한 상대 거리를 유지하는 경우 해당 벡터는 동일한 양만큼 회전됩니다. 이렇게 하면 각도와 벡터 사이의 내적이 일정하게 유지됩니다.
RoPE의 행렬 공식
RoPE의 기술 구현에는 회전 행렬이 포함됩니다. 2D의 경우, 논문의 방정식에는 벡터를 Mθ만큼 회전시키는 회전 행렬이 포함되어 있습니다. 여기서 M은 문장의 절대 위치입니다. 이 회전은 Transformer의 self-attention 메커니즘에서 쿼리 벡터와 키 벡터에 적용됩니다.
더 높은 차원의 경우 벡터는 2D 블록으로 분할되고 각 쌍은 독립적으로 회전됩니다. 이는 n차원이 공간에서 회전하는 것으로 생각할 수 있습니다. 이 방법은 구현하기가 복잡해 보이지만 그렇지 않습니다. PyTorch와 같은 라이브러리에서는 약 10줄의 코드만으로 효율적으로 구현할 수 있습니다.
import torch import torch.nn as nn class RotaryPositionalEmbedding(nn.Module): def __init__(self, d_model, max_seq_len): super(RotaryPositionalEmbedding, self).__init__() # Create a rotation matrix. self.rotation_matrix = torch.zeros(d_model, d_model, device=torch.device("cuda")) for i in range(d_model): for j in range(d_model): self.rotation_matrix[i, j] = torch.cos(i * j * 0.01) # Create a positional embedding matrix. self.positional_embedding = torch.zeros(max_seq_len, d_model, device=torch.device("cuda")) for i in range(max_seq_len): for j in range(d_model): self.positional_embedding[i, j] = torch.cos(i * j * 0.01) def forward(self, x): """Args:x: A tensor of shape (batch_size, seq_len, d_model). Returns:A tensor of shape (batch_size, seq_len, d_model).""" # Add the positional embedding to the input tensor. x += self.positional_embedding # Apply the rotation matrix to the input tensor. x = torch.matmul(x, self.rotation_matrix) return x
为了旋转是通过简单的向量运算而不是矩阵乘法来执行。距离较近的单词更有可能具有较高的点积,而距离较远的单词则具有较低的点积,这反映了它们在给定上下文中的相对相关性。
使用 RoPE 对 RoBERTa 和 Performer 等模型进行的实验表明,与正弦嵌入相比,它的训练时间更快。并且该方法在各种架构和训练设置中都很稳健。
最主要的是RoPE是可以外推的,也就是说可以直接处理任意长的问题。在最早的llamacpp项目中就有人通过线性插值RoPE扩张,在推理的时候直接通过线性插值将LLAMA的context由2k拓展到4k,并且性能没有下降,所以这也可以证明RoPE的有效性。
代码如下:
import transformers old_init = transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__ def ntk_scaled_init(self, dim, max_position_embeddings=2048, base=10000, device=None): #The method is just these three linesmax_position_embeddings = 16384a = 8 #Alpha valuebase = base * a ** (dim / (dim-2)) #Base change formula old_init(self, dim, max_position_embeddings, base, device) transformers.models.llama.modeling_llama.LlamaRotaryEmbedding.__init__ = ntk_scaled_init
总结
旋转位置嵌入代表了 Transformer 架构的范式转变,提供了一种更稳健、直观和可扩展的位置信息编码方式。
RoPE不仅解决了LLM context过长之后引起的上下文无法关联问题,并且还提高了训练和推理的速度。这一进步不仅增强了当前的语言模型,还为 NLP 的未来创新奠定了基础。随着我们不断解开语言和人工智能的复杂性,像 RoPE 这样的方法将有助于构建更先进、更准确、更类人的语言处理系统。
위 내용은 대규모 언어 모델에서 흔히 사용되는 RoPE를 인코딩하는 회전 위치 인코딩에 대한 자세한 설명: 왜 절대 위치 인코딩이나 상대 위치 인코딩보다 나은가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









번역기 | Bugatti 리뷰 | Chonglou 이 문서에서는 GroqLPU 추론 엔진을 사용하여 JanAI 및 VSCode에서 초고속 응답을 생성하는 방법을 설명합니다. 모두가 AI의 인프라 측면에 초점을 맞춘 Groq와 같은 더 나은 대규모 언어 모델(LLM)을 구축하기 위해 노력하고 있습니다. 이러한 대형 모델의 빠른 응답은 이러한 대형 모델이 더 빠르게 응답하도록 보장하는 핵심입니다. 이 튜토리얼에서는 GroqLPU 구문 분석 엔진과 API 및 JanAI를 사용하여 노트북에서 로컬로 액세스하는 방법을 소개합니다. 이 기사에서는 코드 생성, 코드 리팩터링, 문서 입력 및 테스트 단위 생성을 돕기 위해 이를 VSCode에 통합합니다. 이 기사에서는 우리만의 인공 지능 프로그래밍 도우미를 무료로 만들 것입니다. GroqLPU 추론 엔진 Groq 소개

대규모 언어 모델의 잠재력이 자극됩니다. 모든 기존 시계열 모델을 능가하는 대규모 언어 모델을 훈련하지 않고도 고정밀 시계열 예측을 달성할 수 있습니다. Monash University, Ant 및 IBM Research는 여러 양식에 걸쳐 시퀀스 데이터를 처리하는 대규모 언어 모델의 기능을 성공적으로 촉진하는 일반 프레임워크를 공동으로 개발했습니다. 프레임워크는 중요한 기술 혁신이 되었습니다. 시계열 예측은 도시, 에너지, 교통, 원격 감지와 같은 일반적인 복잡한 시스템의 의사 결정에 유용합니다. 이후 대형 모델은 시계열/시공간 데이터 마이닝에 혁명을 일으킬 것으로 예상됩니다. 일반 대형 언어 모델 재프로그래밍 프레임워크 연구팀은 별도의 훈련 없이 일반 시계열 예측을 위해 대형 언어 모델을 쉽게 사용할 수 있는 일반 프레임워크를 제안했습니다. 주로 두 가지 핵심 기술이 제안되었습니다: 타이밍 입력 재프로그래밍; 시간-

AIGC에 대해 자세히 알아보려면 다음을 방문하세요. 51CTOAI.x 커뮤니티 https://www.51cto.com/aigc/Translator|Jingyan Reviewer|Chonglou는 인터넷 어디에서나 볼 수 있는 전통적인 문제 은행과 다릅니다. 고정관념에서 벗어나 생각해야 합니다. LLM(대형 언어 모델)은 데이터 과학, 생성 인공 지능(GenAI) 및 인공 지능 분야에서 점점 더 중요해지고 있습니다. 이러한 복잡한 알고리즘은 인간의 기술을 향상시키고 많은 산업 분야에서 효율성과 혁신을 촉진하여 기업이 경쟁력을 유지하는 데 핵심이 됩니다. LLM은 자연어 처리, 텍스트 생성, 음성 인식 및 추천 시스템과 같은 분야에서 광범위하게 사용될 수 있습니다. LLM은 대량의 데이터로부터 학습하여 텍스트를 생성할 수 있습니다.

고정 위치 지정이 문서 흐름에서 벗어나나요? 웹 개발에서 레이아웃은 매우 중요한 주제입니다. 그 중 포지셔닝(Positioning)은 일반적으로 사용되는 레이아웃 기술 중 하나입니다. CSS에는 정적 위치 지정, 상대 위치 지정, 절대 위치 지정이라는 세 가지 일반적인 위치 지정 방법이 있습니다. 이 세 가지 위치 지정 방법 외에도 더 특별한 위치 지정 방법, 즉 끈적한 위치 지정이 있습니다. 그렇다면 고정 위치 지정이 문서 흐름에서 벗어나나요? 아래에서 자세히 논의하고 이해를 돕기 위해 몇 가지 코드 예제를 제공하겠습니다. 먼저 문서 흐름이 무엇인지 이해해야 합니다.

이 기사는 제2회 OpenHarmony 기술 컨퍼런스에서 시연된 "OpenHarmony에서 대규모 언어 모델의 로컬 배포" 결과를 오픈 소스로 제공합니다. 오픈 소스 주소: https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/thirdparty /InferLLM/docs/hap_integrate.md. 구현 아이디어와 단계는 경량 LLM 모델 추론 프레임워크 InferLLM을 OpenHarmony 표준 시스템에 이식하고 OpenHarmony에서 실행할 수 있는 바이너리 제품을 컴파일하는 것입니다. InferLLM은 간단하고 효율적인 L입니다.

자연어 처리(NLP)는 인공지능 분야에서 중요하고 흥미로운 기술로, 컴퓨터가 인간의 언어를 이해하고 구문 분석하고 생성할 수 있도록 하는 것이 목표입니다. NLP의 개발은 엄청난 발전을 이루었고, 컴퓨터가 인간과 더 잘 상호 작용하고 더 넓은 범위의 응용 프로그램을 구현할 수 있게 되었습니다. 이 글에서는 자연어 처리의 개념, 기술, 응용 및 향후 전망을 살펴보겠습니다. 자연어 처리의 개념은 컴퓨터가 인간의 언어를 이해하고 처리할 수 있도록 하는 방법을 연구하는 학문입니다. 인간 언어의 복잡성과 모호함은 컴퓨터가 이해하고 처리하는 데 큰 어려움에 직면하게 만듭니다. NLP의 목표는 컴퓨터가 텍스트에서 정보를 추출할 수 있도록 하는 알고리즘과 모델을 개발하는 것입니다.

오늘 오후 Hongmeng Zhixing은 공식적으로 새로운 브랜드와 신차를 환영했습니다. 8월 6일, Huawei는 Hongmeng Smart Xingxing S9 및 Huawei 전체 시나리오 신제품 출시 컨퍼런스를 개최하여 파노라마식 스마트 플래그십 세단 Xiangjie S9, 새로운 M7Pro 및 Huawei novaFlip, MatePad Pro 12.2인치, 새로운 MatePad Air, Huawei Bisheng을 선보였습니다. 레이저 프린터 X1 시리즈, FreeBuds6i, WATCHFIT3 및 스마트 스크린 S5Pro를 포함한 다양한 새로운 올-시나리오 스마트 제품, 스마트 여행, 스마트 오피스, 스마트 웨어에 이르기까지 화웨이는 풀 시나리오 스마트 생태계를 지속적으로 구축하여 소비자에게 스마트한 경험을 제공합니다. 만물인터넷. Hongmeng Zhixing: 스마트 자동차 산업의 업그레이드를 촉진하기 위한 심층적인 권한 부여 화웨이는 중국 자동차 산업 파트너와 손을 잡고

LLM(대형 언어 모델)은 언어 이해 및 다양한 추론 작업에서 인상적인 성능을 보여줍니다. 그러나 인간 인지의 핵심 측면인 공간 추론에서의 역할은 아직까지 제대로 연구되지 않은 상태입니다. 인간은 마음의 눈이라는 과정을 통해 보이지 않는 사물과 행동에 대한 정신적 이미지를 만들어 보이지 않는 세계를 상상할 수 있는 능력을 가지고 있습니다. 이러한 인지 능력에 영감을 받아 연구자들은 "생각의 시각화"(VoT)를 제안했습니다. VoT는 추론의 징후를 시각화하여 후속 추론 단계를 안내함으로써 LLM의 공간 추론을 안내하는 것을 목표로 합니다. 연구원들은 자연어 탐색, 비전을 포함한 다중 홉 공간 추론 작업에 VoT를 적용합니다.
