Skip to main content

대규모 언어 모델을 위한 데이터 전처리

이 글은 대규모 언어 모델(LLM)을 개발하는 실무자들이 겪는 여러 문제를 해결할 수 있도록 돕는 데이터 처리 가이드를 제공합니다. 이 글은 AI 번역본입니다. 오역이 있을 수 있으니 댓글로 알려 주세요.
Created on September 15|Last edited on September 15
대규모 언어 모델(LLM)은 성능과 복잡성이 모두 급격히 향상되고 있습니다. 이 복잡성은, 특히 LLM의 규모 때문에, 실질적인 과제를 수반합니다.
이 글에서는 이러한 과제를 해결하기 위해 LLM 개발용 데이터를 어떻게 처리할지 살펴보겠습니다. 다음 주제를 다룹니다:

목차



시작해 봅시다.

LLM 개발 소개

LLM이 매우 효과적으로 작동하는 이유 중 하나는 그 규모에 있습니다. 이들은 방대한 데이터셋으로 학습되기 때문에, 더 작은 데이터셋으로 학습된 작은 모델보다 더 넓은 범위를 이해할 수 있습니다.
이 데이터에는 주제, 장르, 언어 등 매우 폭넓은 범위가 포함되지만, 근본적인 개념은 “데이터는 많을수록 좋다”입니다. 최근 데이터셋으로는 C4, The Pile, BigScience Roots Corpus, 그리고 OpenWebText 인터넷 크롤링으로 수집한 방대한 텍스트를 정제해 LLM 사전 학습을 목적으로 모음으로써 학습 데이터셋의 규모를 키우는 데 기여했다.
하지만 방대한 데이터셋에 대해 수작업으로 검토하고 선별하는 데 비용이 매우 많이 들기 때문에, 이러한 데이터셋 상당수는 품질 문제를 안고 있다. 이는 퍼플렉서티나 검증 손실 같은 지표를 훨씬 넘어서는 영향을 미치는데, 학습된 모델이 학습 데이터에 존재하는 편향을 그대로 반영하기 때문이다.
그보다 더 나아가, 이러한 데이터셋을 정량적·정성적으로 이해하는 일 자체가 하나의 독립된 연구 과제다. LLM의 성장을 이끄는 연료가 데이터인 만큼, 대규모 언어 모델을 학습시키는 데 사용되는 데이터셋의 구성 요소를 이해하고 문서화하는 일이 매우 중요하다. 여전히 남아 있는 근본적인 과제는 어떻게 하면 정량화하다 알고리즘 예측과 의사결정에서 데이터의 가치. 어떤 데이터를 학습에 사용하는 것이 적절한지는 적용 맥락에 따라 크게 달라질 수 있다. 가장 좋은 접근법은 문제 소지가 있을 수 있는 데이터셋의 측면을 제거하기보다는 문서화하는 것이다.
머신러닝에서는 학습 데이터와 테스트(평가) 데이터가 유사하거나 최소한 같은 유형인 경우가 많다. 하지만 대규모 언어 모델의 경우 학습 데이터는 그저 “원시 텍스트”일 뿐이다. 이 때문에 벤치마크 데이터셋과 겹치지 않는 학습/검증/테스트 분할을 만들려 할 때 수많은 문제가 발생한다.
이제 이러한 점들을 염두에 두고, 이 모델들을 학습시키는 데 필요한 거대한 데이터셋을 어떻게 다뤄야 하는지 살펴보겠습니다!

데이터셋 전처리

언어 모델의 학습 목적은 다운스트림 애플리케이션의 맥락에 따라 달라질 수 있지만, LLM 학습에 사용하는 데이터가 깨끗하고 견고하도록 보장하기 위해 실무자가 취할 수 있는 단계와 절차가 몇 가지 있다. 여기에 포함되는 내용은 다음과 같지만 이에 한정되지 않는다:
  • 정크 데이터 처리
  • 중복 제거
  • 오염 제거
  • 유해성 및 편향 관리
  • 개인 식별 정보 관리
  • 프롬프트 관리

정크 데이터 처리

규모가 크더라도 대규모 데이터셋에는 여전히 텍스트 대표성이 고르지 않으며, 난해한 의미 불명의 텍스트와 보일러플레이트 텍스트(예: HTML, Lorem ipsum)가 대량으로 포함되어 있다.
언어 모델링을 위해 웹사이트에서 텍스트를 추출하는 작업, 특히 다국어 코퍼라의 경우는 매우 까다롭다. 그러나 이전 토큰들을 바탕으로 다음 토큰을 예측하도록 조건화된 모델을 학습하기 전에, 이러한 정크를 데이터셋에서 제거하는 것이 중요하다.
데이터 정제 메커니즘과 도구인 jusText, trafilatura 보일러플레이트 HTML 텍스트를 제거하면서 잡음을 줄이는 정밀도와 유효한 부분을 최대한 포함하는 재현율 사이의 균형을 맞추는 데 사용할 수 있다.
웹 코퍼스의 정크를 처리하는 데 매우 유용한 또 다른 방법은 함께 제공되는 메타데이터를 기준으로 필터링하는 것이다. 예를 들어 OpenAI가 GPT-2 학습을 위해 WebText 코퍼스를 만들 때, 연구진은 최소 3 카르마(업보트)를 받은 레딧의 모든 외부 링크를 수집했다. 이러한 휴리스틱은 데이터의 품질을 높이는 동시에 데이터셋의 잡음을 줄이는 데 도움이 된다.

문서 길이 고려사항

언어 모델링의 목표는 이전 토큰들에 조건화되어 텍스트를 생성하는 법을 학습하는 것이다. 이러한 맥락에서 코퍼스에서 매우 짧은 문서(약 100토큰 미만의 텍스트)를 제거하면, 텍스트 내 의존성을 모델링할 수 있는 연속적인 텍스트를 확보하여 잡음을 줄이는 데 도움이 된다.
또한, 오늘날 대부분의 언어 모델이 기반으로 하는 것은 트랜스포머 아키텍처를 고려할 때, 매우 긴 문서를 원하는 길이의 연속 구간으로 전처리하고 청크로 나누는 것이 유용하다. 예를 들어, datasets 라이브러리의 다음 코드 스니펫은 매우 긴 문서를 서로 겹치지 않는 구간으로 분할하는 방법을 보여준다:
def chunk_examples(examples):
chunks = []
for sentence in examples['sentence']:
chunks += [sentence[i:i + 50] for i in range(0, len(sentence), 50)]
return {'chunks': chunks}

기계 생성 텍스트

언어 모델을 학습하는 목표 중 하나는 인간 언어의 분포를 포착하는 것이다. 그러나 웹 크롤링 데이터셋에는 기존 언어 모델이 생성한 텍스트 형태의 기계 생성 텍스트가 대량으로 포함되어 있다. OCR 텍스트와 기계 번역 텍스트
예를 들어, patents.google.com의 데이터는 C4 코퍼스에서 큰 비중을 차지한다. 이 사이트는 전 세계 특허청의 특허를 기계 번역으로 영어로 변환한다. 또한 웹 코퍼스의 데이터에는 스캔한 책과 문서에서 OCR로 생성된 텍스트도 포함되어 있다. OCR 시스템은 완벽하지 않아서 자연스러운 영어와는 분포가 다른 텍스트를 만들어낸다. 흔히 철자 오류나 단어 누락처럼 예측 가능한 방식으로 실수를 저지르곤 한다.
기계 생성 텍스트를 식별하는 것은 매우 어렵고(이 주제는 여전히 활발히 연구되고 있다!), 다음과 같은 몇 가지 도구가 있다. ctrl-detector 기계 생성 텍스트를 식별하고 검출하는 데 사용할 수 있다. 언어 모델링을 위한 코퍼스를 전처리할 때는 코퍼스에 포함된 기계 생성 텍스트의 존재를 파악하고 문서화하는 것이 중요하다.

중복 제거

인터넷에서 원시 텍스트를 스크래핑해 만든 데이터셋에는 동일한 시퀀스가 여러 번 반복되는 경우가 흔하다. 예를 들어, in "학습 데이터 중복 제거는 언어 모델 성능을 향상시킨다" 저자들은 C4 데이터셋에서 동일한 50단어 길이의 시퀀스가 6만 번 반복된다는 사실을 발견했다!
중복이 제거된 데이터셋으로 모델을 학습하면 학습 속도가 더 빠르고 암기 현상이 발생할 가능성이 낮다. 최근 연구에서는 중복된 데이터로 학습된 언어 모델이 프라이버시 공격에 취약하다는 사실도 밝혀졌다. 공격자는 학습된 모델로부터 시퀀스를 생성한 뒤, 그중 어떤 시퀀스가 학습 데이터에서 암기된 것인지 식별할 수 있다. 해당 연구에서, "학습 데이터 중복 제거는 언어 모델의 프라이버시 위험을 완화한다저자들은 언어 모델이 학습 시퀀스를 재생성하는 비율이 학습 세트에서 해당 시퀀스의 등장 횟수와 초선형적으로 관련되어 있음을 보여준다. 예를 들어, 학습 데이터에 10번 등장한 시퀀스는 평균적으로 생성된다 1000배 더 한 번만 등장한 시퀀스보다 더 자주.
중복 제거는 다양한 세분화 수준에서 수행할 수 있다. 정확 일치 기반 중복 제거부터 다음과 같은 퍼지 중복 제거 도구에 이르기까지 deduplicate-text-datasets, 그리고 datasketch 처리 중인 코퍼스에서 중복된 텍스트를 줄이거나 제거하는 데 도움이 될 수 있다. 많은 연구자들이 지적했듯이, 웹 크롤링 데이터셋의 규모 때문에 중복 제거 과정은 많은 계산 자원(CPU와 RAM)을 요구하므로, 이러한 연산은 분산 환경에서 수행하는 것을 권장한다.

오염 제거

일반적으로 머신러닝에서는 데이터 위생, 즉 학습 데이터와 테스트 데이터의 분리가 비교적 간단하다. 그러나 학습과 벤치마킹에 쓰이는 데이터셋이 모두 인터넷에서 수집되는 대규모 언어 모델의 경우, 사전에 이들을 철저히 분리하는 일은 상당히 어려울 수 있다.
예를 들어 대규모 언어 모델의 능력을 평가할 때 질문–응답 쌍과 같은 벤치마크 데이터를 사용한다면, 그 벤치마크 데이터가 모델의 학습 데이터에 포함되어 있었는지 여부가 결과에 영향을 준다. 이런 경우 벤치마크 성능은 실제보다 높게 치우칠 수 있다.
오염 제거는 기존 벤치마크 데이터셋과 겹치는 학습 데이터셋의 샘플을 제거하는 과정을 특히 가리킨다. 중복 제거와 유사하게, 기존 벤치마크와 겹치는 샘플을 삭제함으로써 학습 데이터셋의 무결성을 유지할 수 있다. 예를 들어 OpenAI 연구자들은 WebText 데이터셋을 구축할 때, 벤치마크에서 위키피디아 데이터를 광범위하게 사용했기 때문에 학습 세트에서 모든 위키피디아 콘텐츠를 제거하여 데이터셋을 오염 제거했다. 또 다른 사례로, EleutherAI 연구자들은 다음과 같은 방법을 통해 벤치마크 데이터셋을 오염 제거하는 방식을 제시했다. lm-eval harness 패키지 학습 데이터셋의 오염 제거가 불가능했던 모델의 경우.
좀 더 구체적으로는, 다음의 두 가지 유형의 데이터 오염을 고려하는 것이 중요하다:
입출력 오염:
이 유형의 데이터 오염은 사전 학습 코퍼스에 다운스트림 작업의 레이블이 포함되어 있을 때 발생한다. 언어 모델링과 유사한 작업(예: 추상적 요약)의 경우, 작업 레이블은 목적 토큰에 해당한다. 목표 텍스트가 사전 학습 코퍼스에 등장하면, 모델은 실제로 작업을 해결하기보다 그 텍스트를 그대로 복사하는 법을 학습할 수 있다.
입력 오염라벨이 포함되지 않은 평가 예제의 입력 오염 역시 다운스트림 문제를 유발할 수 있다. 예를 들어 제로샷과 퓨샷 평가를 수행할 때 벤치마크 성능이 실제보다 높게 편향될 수 있다. 따라서 대중적으로 사용되는 벤치마크와의 겹침을 고려하여 사전 학습 데이터셋에 대해 신중하게 오염 제거 절차를 수행하는 것이 중요하다.

유해성 및 편향 관리

웹 코퍼라는 다양하지만, 동시에 유해하고 편향된 콘텐츠로도 가득하다. 예를 들어, 해당 연구의 저자들은 RealToxicityPrompts 논문은 …을 사용한다 Perspective API OpenWebText의 2.1%와 WebText의 4.3%가 유해성 점수 ≥ 50%라고 보고했다.
언어 모델을 학습할 때는 Perspective API와 같은 도구를 사용해 사전 학습 데이터셋에서 유해한 콘텐츠에 주의를 기울이고, 필요하다면 필터링하는 것이 중요하다. 이렇게 하면 모델이 편향을 보이거나 다운스트림 애플리케이션에서 해로운 출력을 생성하는 것을 방지할 수 있다. 이를 완화하기 위한 한 가지 예로, “금칙어”에 대한 텍스트 필터링 문제가 있다. 예를 들어 C4의 저자들은 다음에 포함된 텍스트를 필터링한다. 목록또 다른 예로, The Pile 데이터셋을 개발한 연구자들은 유해한 콘텐츠를 다음과 같이 분류한다 스팸스캐너.
그러나 이러한 필터링 단계는 다운스트림 애플리케이션을 면밀히 고려하면서 매우 신중하게 수행해야 한다. 패권적 관점을 따를 가능성이 큰 이들의 목소리가 필터를 통해 상대적으로 더 많이 보존될 수 있기 때문이다. 언어 모델의 사전 학습에 데이터를 사용하기 전에, 비하적 콘텐츠와 성별·종교 편향에 대한 정밀한 분석을 반드시 수행해야 한다.

개인 식별 정보 관리

대규모 데이터셋을 수집할 때는, 데이터셋에 포함된 개별 사례와 관련된 법적 측면을 이해하는 것도 중요하다. 특히 고유명, 기관명, 진료 기록, 사회보장번호 등 개인 식별 정보(PII)를 다루는 데 각별한 주의를 기울여야 한다.
적용 사례에 따라, 다음 중 하나를 수행하는 것이 중요하다 마스킹하거나 제거합니다 언어 모델을 사전 학습하기 전에 이러한 정보를 파악해야 한다. 다음과 같은 도구를 활용할 수 있다 presidio 그리고 pii-codex 텍스트 데이터에서 개인 식별 정보를 탐지하고, 분석하며, 처리하는 파이프라인을 제공합니다.

프롬프트 관리

최근 모델인 Flan-T5, InstructGPT, 그리고 Galactica 이들 모델의 다운스트림 작업 성능을 높이기 위해 프롬프트 사전 학습과 인스트럭트 미세 조정을 도입했습니다.
이러한 방법을 데이터셋 구축에 도입하려면 다양성을 유지하면서 프롬프트 설계와 생성의 여러 측면에 상당한 노력이 필요합니다. 다음과 같은 도구들로는 PromptSource 자연어 프롬프트를 생성하고, 공유하며, 활용하는 데 사용할 수 있습니다. 예를 들어, 분류 작업은 해당 라이브러리를 사용해 다음과 같은 프롬프트로 모델링할 수 있습니다.
# actual data point
{
"text":"Wall St. Bears Claw Back Into the Black (Reuters) Reuters - Short-sellers, Wall Street's dwindling\band of ultra-cynics, are seeing green again."
"label":2
}
# prompted
Input

Wall St. Bears Claw Back Into the Black (Reuters) Reuters - Short-sellers, Wall Street's dwindling\band of ultra-cynics, are seeing green
again.
What label best describes this news article?
Target

Business

문서화

문서화의 중요성은 오래전부터 알려져 있었지만, 머신러닝 커뮤니티는 이를 종종 임시방편적인 절차로 취급해 왔습니다.
좀 더 구체적으로 말하면, 머신러닝에서는 실무자들이 데이터셋을 수집해 학습 알고리즘에 투입하는 고정된 객체로 간주하는 경향이 있습니다. 머신러닝에서 데이터의 중요성에도 불구하고, 현재 머신러닝 데이터셋을 문서화하기 위한 표준화된 절차는 존재하지 않습니다.
이러한 공백을 해소하기 위해 일부 연구자들은 다음과 같은 방안을 제안했습니다. 데이터시트 그리고 데이터 진술. 문서화 가이드는 동기, 구성, 수집, 선별 근거, 전처리/정제/레이블링, 활용, 배포, 유지보수 등 데이터셋의 여러 측면을 문서화하는 방법을 제안합니다. 핵심 초점은 프로세스와 데이터의 투명성입니다. 예를 들어, 다음을 살펴보세요. The Pile 데이터시트 데이터셋입니다. 자체 데이터셋을 문서화하려는 사람들에게 훌륭한 출발점이자 영감이 됩니다. 훌륭한 분들이 있는 Hugging Face 또한 훌륭한 템플릿 허브에 있는 데이터셋 문서화를 돕기 위해.

핵심 요점

LLM은 방식에 극적인 변화를 가져왔습니다 NLP 그리고 NLU 작업은 머신러닝 실무자들이 담당합니다.
대규모 웹 코퍼스의 가용성이 점점 더 큰 모델을 학습하는 데 기여해 온 것은 분명하지만, 그러한 모델이 학습하는 데이터셋을 면밀히 검토하고 전처리하는 일은 매우 중요합니다.
이 보고서에서는 이러한 모델을 학습하는 데 사용되는 데이터가 적절하고 깨끗하게 유지되도록 실무자가 취할 수 있는 핵심 단계들을 다뤘습니다. 또한, 이러한 작업의 일부를 수행하는 데 도움이 되는 자료 링크도 제공합니다.


이 글은 AI 번역본입니다. 오역이 의심되는 부분은 댓글로 알려주세요. 원문 보고서 링크는 다음과 같습니다: 원문 보고서 보기