paint-brush
단 몇 줄의 코드로 LLM을 더욱 정확하게 만드는 방법~에 의해@FrederikBussler
7,022 판독값
7,022 판독값

단 몇 줄의 코드로 LLM을 더욱 정확하게 만드는 방법

~에 의해 Frederik Bussler5m2023/08/14
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

AI 혁명은 ChatGPT와 같은 LLM(대형 언어 모델)의 출현으로 바뀌어 데이터 복잡성에 대한 승리를 나타냅니다. 이러한 LLM은 대규모 데이터 세트(최대 페타바이트)와 인간 언어의 복잡한 특성으로 인해 어려움에 직면해 있습니다. Cleanlab과 같은 데이터 중심 도구는 AI 데이터 처리에 혁명을 일으키고 데이터 개선 프로세스를 자동화하며 발전을 민주화했습니다. 실제 데이터 세트의 주석 오류(7~50%)로 인해 훈련을 방해하므로 데이터 중심 AI가 필수적입니다. OpenAI와 Cleanlab과 같은 도구는 데이터 품질을 우선시하여 모델 정확도를 크게 향상시킵니다. Python 데모는 Cleanlab이 라벨 문제를 감지하고, 데이터를 필터링하고, 모델을 재교육하여 정확도를 63%에서 66% 이상으로 높이는 방법을 보여줍니다. 이 데이터 중심 접근 방식은 GPT-5와 같은 미래의 LLM에 대한 가능성을 제시합니다.
featured image - 단 몇 줄의 코드로 LLM을 더욱 정확하게 만드는 방법
Frederik Bussler HackerNoon profile picture
0-item
1-item
2-item

AI 혁명은 수십 년에 걸쳐 진행되었습니다. 그것은 흥분으로 가득 찬 현장이었지만 종종 실망감과 " AI 겨울 "로 얼룩졌습니다. 하지만 최근 뭔가 달라졌습니다. ChatGPT, Claude, Bard와 같은 LLM(대형 언어 모델)은 AI를 실험실의 호기심에서 주류 로 끌어올렸습니다.


이러한 변화는 AI의 승리일 뿐만 아니라 크고 지저분한 데이터의 복잡성에 대한 승리이기도 했습니다. 속담처럼 "쓰레기는 들어가고 쓰레기는 나온다." 기본 데이터를 개선하여 LLM을 개선하는 데 초점을 맞춘 새로운 도구가 등장하고 있습니다.


LLM의 이중 도전

"대형 언어 모델"이라는 용어에는 두 가지 큰 과제가 있습니다. 첫째, 엄청난 양의 데이터입니다. 우리는 수백만 권의 책, 블로그, 소셜 미디어 게시물, 비디오 사본 등을 포함하여 페타바이트 (백만 기가바이트) 이상의 GPT-4 데이터를 이야기하고 있습니다. 이 거대한 규모는 엄청난 잠재력을 제공하지만 물류 측면에서도 중요한 고려 사항을 제시합니다.


둘째, 자연어의 복잡성이다. 상황에 따라 다르고 모호하며 다양한 언어 데이터는 최고의 알고리즘이라도 길들이기 힘든 야수입니다. 이 모든 데이터에 정확하게 레이블을 지정하는 것은 불가능하며 이는 필연적으로 최첨단 LLM조차도 레이블이 잘못 지정된 수많은 데이터에 대해 교육을 받는다는 것을 의미합니다.


이러한 과제에 직면하면서 새로운 데이터 중심 도구와 방법론이 등장하여 AI가 할 수 있는 일에 진정한 도약을 가능하게 했습니다. Cleanlab 등의 솔루션은 다양한 데이터를 수집하고, 품질 관리를 자동화하고, 언어를 AI 모델에 적합한 형태로 처리하는 방법을 제공하기 시작했습니다.


이러한 도구는 단순히 점진적인 개선을 제공하는 것이 아닙니다. 그들은 AI 데이터 처리에 대한 접근 방식을 근본적으로 재편했습니다. 그들은 대규모 언어 데이터를 처리하는 작업을 오류가 발생하기 쉬운 수동 프로세스에서 자동화되고 정확한 프로세스로 전환하여 해당 분야를 민주화하고 전례 없는 속도로 발전할 수 있도록 했습니다.


데이터 중심 AI가 필요한 이유(Python 데모 포함)

AI에서 실제 데이터세트에는 7~50% 범위의 주석 오류가 포함되어 있습니다. 이러한 불완전성은 훈련과 평가를 크게 방해합니다. 데이터 중심 AI는 데이터 세트 자체의 품질 향상을 강조합니다.


예를 들어 OpenAI의 전략은 이러한 강조점을 잘 보여줍니다. “우리는 좋은 데이터를 모두 남기는 것보다 나쁜 데이터를 모두 필터링하는 것을 우선시했습니다. 이는 나중에 더 많은 데이터를 사용하여 모델을 미세 조정하여 새로운 것을 가르칠 수 있지만 모델이 이미 학습한 내용을 잊어버리게 만드는 것이 훨씬 어렵기 때문입니다.”


그러나 데이터를 수동으로 필터링하는 접근 방식은 시간이 많이 걸리고 비용이 많이 듭니다. Cleanlab 패키지는 오늘날 데이터 중심 AI를 실행하는 데 널리 사용되는 오픈 소스 프레임워크입니다. 훈련된 ML 모델의 출력에 대해 데이터 품질 알고리즘을 실행하여 레이블 오류, 이상값, 드리프트 등과 같은 일반적인 데이터 세트 문제를 감지할 수 있습니다.


단 몇 줄의 코드만으로 이미지, 텍스트, 표, 오디오 등 다양한 유형의 데이터에서 문제를 자동으로 찾아 식별할 수 있습니다. Cleanlab 패키지를 사용하면 데이터세트와 모델을 개선하는 방법을 결정하고, ML 모델을 재교육하고, 기존 코드를 변경하지 않고도 성능이 향상되는 것을 확인할 수 있습니다.


반면 Cleanlab Studio는 단순한 Cleanlab 패키지의 확장 그 이상입니다. 실제 데이터 세트에서 문제를 찾아 수정하도록 설계된 코드 없는 플랫폼입니다. 문제 감지에 그치지 않고 데이터 큐레이션 및 수정 처리에 더 나아가 원시 데이터를 신뢰할 수 있는 ML 또는 분석으로 전환하는 데 필요한 거의 모든 어려운 부분을 자동화합니다.


Cleanlab 패키지를 사용하여 데이터 중심 AI의 힘을 보여드리겠습니다.


1. 데이터 준비 및 미세 조정

Stanford Politeness Dataset 부터 시작하겠습니다. 학습테스트 세트가 로드되었는지 확인하세요. 이 데모에서는 먼저 Cleanlab을 사용하지 않고 3등급 분류를 위해 Davinci LLM을 미세 조정한 다음 데이터 중심성을 통해 정확성을 향상할 수 있는 방법을 살펴보겠습니다. 간단한 bash 명령을 실행하여 모델을 훈련할 수 있습니다.


!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"


완료되면 fine_tunes.results 엔드포인트를 쿼리하여 테스트 정확도를 확인할 수 있습니다.


!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv

`df = pd.read_csv('baseline.csv')

기준선_acc = df.iloc[-1]['분류/정확도']`


우리는 63% 정확도의 결과를 얻었습니다. 이를 개선할 수 있는지 살펴보겠습니다.


2. 예측 클래스 확률 얻기

이제 OpenAI의 API를 사용하여 임베딩을 계산하고 로지스틱 회귀 모델을 피팅하여 샘플 외 예측 클래스 확률을 얻습니다.


# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding

embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values

# Get out-of-sample predicted class probabilities via cross-validation.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")


단 한 줄의 코드로 Cleanlab은 훈련 데이터 세트에서 라벨 문제가 있는 예제를 추정합니다.


from cleanlab.filter import find_label_issues

이제 라벨 문제가 있는 것으로 추정되는 예시의 색인을 얻을 수 있습니다.


issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error


3. 필터 라벨 문제 및 재교육

이제 레이블이 잘못 지정되었을 가능성이 있는 예제의 인덱스를 자동으로 추출했으므로 이를 제거하고 새 분류기를 교육할 수 있습니다.


# Remove the label errors

train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")


이제 더 나은 데이터로 더 강력한 분류기를 훈련해 보겠습니다.


!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"


# Evaluate model on test data

!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']


아무런 변경 없이 데이터세트를 자동으로 개선하는 것만으로도 최첨단 미세 조정 모델(GPT-4는 미세 조정할 수 없으므로 GPT-3)을 개선하여 66% 이상의 정확도를 얻습니다. 모델에게.


Cleanlab Studio를 사용하면 잘못된 라벨을 완전히 제거하는 대신 자동으로 수정하여 정확도를 더욱 향상시킬 수도 있습니다. Cleanlab의 가이드 에 따르면 정확도는 최대 77%에 달합니다.


테이크아웃

Cleanlab과 같은 데이터 중심 도구를 사용하면 데이터 및 라벨 문제를 효율적으로 찾아 수정할 수 있어 Davinci와 같은 LLM의 성능이 크게 향상됩니다. 이 접근 방식은 모델 아키텍처나 하이퍼파라미터를 변경하지 않으며 훈련 데이터의 품질을 향상시키는 데에만 중점을 둡니다.


이 가이드에 설명된 접근 방식은 GPT-5와 같은 미래의 고급 LLM을 사용하더라도 AI 모델의 정확성과 견고성을 더욱 향상시키는 열쇠가 될 수 있습니다.