Hub documentation
Distilabel
Distilabel
Distilabel์ ๊ฒ์ฆ๋ ์ฐ๊ตฌ ๋ ผ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๋น ๋ฅด๊ณ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ํ์ดํ๋ผ์ธ์ด ํ์ํ ์์ง๋์ด๋ฅผ ์ํ ํฉ์ฑ ๋ฐ์ดํฐ ๋ฐ AI ํผ๋๋ฐฑ ํ๋ ์์ํฌ์ ๋๋ค.
Distilabel์ ์ ํต์ ์ธ ์์ธกํ NLP(๋ถ๋ฅ, ์ถ์ถ ๋ฑ)๋ถํฐ ์์ฑํ ๋ฐ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ ์๋๋ฆฌ์ค(์ง์ ๋ฐ๋ฅด๊ธฐ, ๋ํ ์์ฑ, ํ๋จ ๋ฑ)๊น์ง ๋ค์ํ ํ๋ก์ ํธ์์ ํฉ์ฑ ๋ฐ์ดํฐ ๋ฐ AI ํผ๋๋ฐฑ ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Distilabel์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ํ์ฅ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์์ฑ ๋ฐ AI ํผ๋๋ฐฑ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. distilabel์ ๋ชฉํ๋ ๊ฒ์ฆ๋ ์ฐ๊ตฌ ๋ฐฉ๋ฒ๋ก ์ ๊ธฐ๋ฐํ AI ํผ๋๋ฐฑ ์์ฑ ๋ฐ ํ๋จ์ ํตํด ๊ณ ํ์ง์ด๊ณ ๋ค์ํ ๋ฐ์ดํฐ์ ์ ๋น ๋ฅด๊ฒ ์์ฑํ์ฌ AI ๊ฐ๋ฐ์ ๊ฐ์ํํ๋ ๊ฒ์ ๋๋ค.
์ฌ๋๋ค์ distilabel๋ก ๋ฌด์์ ๋ง๋๋์?
Argilla ์ปค๋ฎค๋ํฐ๋ distilabel์ ์ฌ์ฉํ์ฌ ๋๋ผ์ด ๋ฐ์ดํฐ์ ๊ณผ ๋ชจ๋ธ์ ์์ฑํฉ๋๋ค.
- 1M OpenHermesPreference๋ teknium/OpenHermes-2.5 LLM์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ์ฝ 100๋ง ๊ฐ์ AI ์ ํธ๋ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ์ ์ ๋๋ค. distilabel์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๊ฐ๋ฐ์ ํ์ฅํ๊ณ ๊ท๋ชจ๋ฅผ ํค์ธ ์ ์๋ ํ๋ฅญํ ์์์ ๋๋ค.
- distilabeled Intel Orca DPO dataset๋ improved OpenHermes model์ fine-tuneํ๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค. ์ด ๋ฐ์ดํฐ์ ์ Argilla์ human curation๊ณผ distilabel์ AI feedback์ ๊ฒฐํฉํ์ฌ ๊ตฌ์ถ๋์์ผ๋ฉฐ, Intel Orca dataset์ ๊ฐ์ ๋ ๋ฒ์ ์ผ๋ก, ์๋ณธ ๋ฐ์ดํฐ์ ์ผ๋ก fine-tune๋ ๋ชจ๋ธ๋ณด๋ค ์ฐ์ํ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
- haiku DPO ๋ฐ์ดํฐ๋ ๋๊ตฌ๋ ํน์ ์์ ์ ์ํ ํฉ์ฑ ๋ฐ์ดํฐ์ ์ ๋ง๋ค ์ ์๋ ์์์ด๋ฉฐ, ์ด ๋ฐ์ดํฐ์ ์ ํ๋ ์ด์ ๊ณผ ํ๊ฐ๋ฅผ ๊ฑฐ์น ํ ๋ง์ถคํ LLM์ ํ์ธํ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ ์กฐ๊ฑด
๋จผ์ Hugging Face ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํฉ๋๋ค:
hf auth login
distilabel์ด ์ค์น๋์ด ์๋์ง ํ์ธํ์ธ์:
pip install -U distilabel[vllm]
Distilabel ํ์ดํ๋ผ์ธ
Distilabel ํ์ดํ๋ผ์ธ์ ์๋ก ์ฐ๊ฒฐ๋ ์ฌ๋ฌ ๋จ๊ณ๋ ์์
์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ํ ๋จ๊ณ ๋๋ ์์
์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋จ๊ณ์ ์
๋ ฅ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐํ์ฌ LLM์ ํ์ฉํ ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์์ฑ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๊ฐ ๋จ๊ณ์ ์
๋ ฅ์ ๋ฐ์ดํฐ ๋ฐฐ์น์ด๋ฉฐ, ๋ฐ์ดํฐ์
์ ๊ฐ ํ์ ๋ํ๋ด๋ ์ฌ์ ์ ๋ชฉ๋ก์ ํฌํจํฉ๋๋ค. ์ด๋ ์ฌ์ ์ ํค๋ ์ด ์ด๋ฆ์
๋๋ค. Hugging Face ํ๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณด๋ด๊ธฐ ์ํด datasets.DatasetDict์ ์ถ์ํ๋ก Distiset ํด๋์ค๋ฅผ ์ ์ํ์ต๋๋ค.
Distiset๋ฅผ ๋ฐ์ดํฐ์ ๊ฐ์ฒด๋ก
distilabel์ Pipeline์ Distiset์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ Hugging Face์ datasets.DatasetDict ํน์ ์ ํ์ ๋ฐํํฉ๋๋ค.
Pipeline์ Distiset์์ ์ฌ๋ฌ ํ์ ์งํฉ์ ์ถ๋ ฅํ ์ ์์ผ๋ฉฐ, Distiset์ ํ์ ์งํฉ๋ณ๋ก ํ๋์ ํญ๋ชฉ์ ๊ฐ์ง ์ฌ์ ๊ณผ ์ ์ฌํ ๊ฐ์ฒด์ ๋๋ค. ์ดํ Distiset์ ๋ชจ๋ ํ์ ์งํฉ์ด ๋์ผํ ์ ์ฅ์์ ํฌํจ๋๋๋ก Hugging Face Hub์ ์ํํ๊ฒ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
Hub์์ Distiset์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋
Hub์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ์์๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด, Prometheus 2 ๋ ผ๋ฌธ์ ์ฌํํ๊ณ distilabel์ ๊ตฌํ๋ PrometheusEval ์์ ์ ์ฌ์ฉํฉ๋๋ค. Prometheus 2์ Prometheuseval ์์ ์ ๊ฐ๊ฐ ์ง์ ํ๊ฐ(direct assessment)์ ์๋ณ ๋ญํน(pairwise ranking) ์์ ์ ๋๋ค. ์ฆ, ์ฃผ์ด์ง ์ง์์ด์ ๋ํด ์ฐธ์กฐ ๋ต๋ณ์ด ์๊ฑฐ๋ ์๋ ์ํ์์ ๋จ์ผ ๊ฒฉ๋ฆฌ๋ ์๋ต์ ํ์ง์ ํ๊ฐํ๋ ์์ ๊ณผ, ์ฃผ์ด์ง ์ง์์ด์ ๋ํด ์ฐธ์กฐ ๋ต๋ณ์ด ์๊ฑฐ๋ ์๋ ์ํ์์ ํ ์๋ต์ ๋ค๋ฅธ ์๋ต๊ณผ ๋น๊ตํ์ฌ ํ์ง์ ํ๊ฐํ๋ ์์ ์ ๋๋ค. Hugging Face H4 ํ์ด ๋ง๋ HuggingFaceH4/instruction-dataset์ด๋ผ๋ ์ด๋ฆ์ Hub์์ ๋ก๋ํ ๋ฐ์ดํฐ์ ์ ์ด ์์ ๋ค์ ์ ์ฉํ ๊ฒ์ ๋๋ค.
from distilabel.llms import vLLM
from distilabel.pipeline import Pipeline
from distilabel.steps import KeepColumns, LoadDataFromHub
from distilabel.steps.tasks import PrometheusEval
if __name__ == "__main__":
with Pipeline(name="prometheus") as pipeline:
load_dataset = LoadDataFromHub(
name="load_dataset",
repo_id="HuggingFaceH4/instruction-dataset",
split="test",
output_mappings={"prompt": "instruction", "completion": "generation"},
)
task = PrometheusEval(
name="task",
llm=vLLM(
model="prometheus-eval/prometheus-7b-v2.0",
chat_template="[INST] {{ messages[0]['content'] }}\n{{ messages[1]['content'] }}[/INST]",
),
mode="absolute",
rubric="factual-validity",
reference=False,
num_generations=1,
group_generations=False,
)
keep_columns = KeepColumns(
name="keep_columns",
columns=["instruction", "generation", "feedback", "result", "model_name"],
)
load_dataset >> task >> keep_columns๊ทธ๋ฐ ๋ค์ ๋ฐํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ์ฌ pipeline.run์ ํธ์ถํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ดํ๋ผ์ธ์ด ์์๋๊ณ ๋ฐ์ดํฐ๊ฐ Distiset ๊ฐ์ฒด์ ์ ์ฅ๋ฉ๋๋ค.
distiset = pipeline.run(
parameters={
task.name: {
"llm": {
"generation_kwargs": {
"max_new_tokens": 1024,
"temperature": 0.7,
},
},
},
},
)Hub์ distilabel Distiset ์ ๋ก๋
Distiset์ Hugging Face ์ ์ฅ์์ ํธ์ํ๋ฉด ๊ฐ ์๋ธ์
์ด ์๋ก ๋ค๋ฅธ ๊ตฌ์ฑ์ ๋์ํฉ๋๋ค:
distiset.push_to_hub(
"my-org/my-dataset",
commit_message="Initial commit",
private=False,
token=os.getenv("HF_TOKEN"),
)๐ ๋ฆฌ์์ค
- ๐ Distilabel ๋ฌธ์
- ๐ Distilabel ๋ฌธ์ - distiset
- ๐ Distilabel ๋ฌธ์ - prometheus
- ๐ distilabel ์๊ฐ