����λ�ã���ҳ > �����̳� > �̳� > ͨ��ORPO����΢�� llama3��ģ��(Fine-tune Llama 3 with ORPO)
1f45bd1e8577af66a05f5e3fadb0b29 ͨ��ORPO��llama����΢�� ǰ�� ORPO��һ����ӱ��΢��������������ͳ�ļල΢����ƫ�ö���׶����ϵ�һ�������С��������ѵ������ļ�����Դ��ʱ�䡣���⣬������������ORPO�ڸ���ģ�ʹ�С�ͻ�׼�����ж��������������뷽���� �ڱ�
ORPO��һ����ӱ��΢��������������ͳ�ļල΢����ƫ�ö���׶����ϵ�һ�������С��������ѵ������ļ�����Դ��ʱ�䡣���⣬������������ORPO�ڸ���ģ�ʹ�С�ͻ�׼�����ж��������������뷽���� �ڱ����У����ǽ�ʹ��ORPO��TRL����΢���µ�Llama 3 8Bģ�͡����������Google Colab��https://colab.research.google.com/drive/1eHNWg9gnaXErdAa8_mcvjMupbSS6rDvi?usp=sharing����GitHub�ϵ�LLM(https://github.com/mlabonne/llm-course)�γ����ҵ���
ָ�������ƫ�ö����ǽ���������ģ�ͣ�LLMs����Ӧ�ض�����Ĺؼ���������ͳ�ϣ����漰��һ����׶εĹ��̣�
Ȼ�����о���Ա�������ַ�����һ�������ԡ����Ǽල΢����SFT��������Ч����ģ����Ӧ�ض�������Ҳ����Ϊʲô��Ҫƫ�ö���׶�RLHF�������ܻ�Ó����Ͳ��ܻ�Ó���֮����ʵIJ�ࡣ
SFT�����У����ܻ�Ó��������ʵ֤ from ORPO����
2024��Hong��Lee�����ORPOͨ����SFT��RLHFͳһΪһ������ѵ�����̣�Ϊ��������ṩ��һ�����ŵĽ��������ORPO�޸��˱�׼language model��ѵ��Ŀ�꣬����������Ȼ��ʧ��odds ratio(OR)��������������OR��ʧ�Բ��ܻ�Ó�����ʩ������΢�ijͷ���ͬʱ�Ӵ����ܻ�Ó�����������ģ��ͬʱѧϰĿ������������ƫ�ö��롣
ORPO�Ѿ�����Ҫ��΢�����еõ�ʵ�֣�����TRL��Axolotl��LLaMA-Factory������һ���У����ǽ��������ʹ��TRL���в�����
Llama3��Meta����������һ����������ģ�ͣ�LLM������Щģ������15����token�Ĺ㷺���ݼ���ѵ���ģ����֮�£�Llama2��ѵ�����ݼ�Ϊ2����token��������������ģ�ͳߴ磺һ��700�ڲ�����ģ�ͺ�һ����С��80�ڲ�����ģ�͡�700�ڲ�����ģ���Ѿ�չʾ������ӡ����̵����ܣ���MMLU��׼�����е÷�Ϊ82����HumanEval��׼�����е÷�Ϊ81.7��
Llama3ģ�ͻ������������ij��ȣ����ɴ�8192��token��Llama2Ϊ4096��token�������ҿ���ͨ��RoPE��չ��32k�����⣬��Щģ��ʹ����һ������128K-token�ʻ�����·ִ����������˱����ı�����token������15%������ʻ��Ҳ�����˴�70�ڵ�80�ڲ�����������
ORPO��Ҫһ��ƫ�����ݼ�������һ����ʾ��һ����ѡ��Ĵ𰸺�һ�����ܾ��Ĵ𰸡�����������У����ǽ�ʹ��mlabonne/orpo-dpo- mix-40k������һ�������¸�����DPO���ݼ���϶��ɵ����ݼ���
argilla/distilabel-capybara-dpo-7k-binarized
: �߷�ѡ��Ĵ� >=5��2,882�������� https://huggingface.co/datasets/argilla/distilabel-capybara-dpo-7k-binarized
argilla/distilabel-intel-orca-dpo-pairs
: �߷�ѡ��Ĵ� >=9������GSM8K�У�2,299�������� https://huggingface.co/datasets/argilla/distilabel-intel-orca-dpo-pairs
argilla/ultrafeedback-binarized-preferences-cleaned
: �߷�ѡ��Ĵ� >=5��22,799�������� https://huggingface.co/datasets/argilla/ultrafeedback-binarized-preferences-cleaned
argilla/distilabel-math-preference-dpo
: �߷�ѡ��Ĵ� >=9��2,181�������� https://huggingface.co/datasets/argilla/distilabel-math-preference-dpo
unalignment/toxic-dpo-v0.2
(541������) https://huggingface.co/datasets/unalignment/toxic-dpo-v0.2
M4-ai/prm_dpo_pairs_cleaned
(7,958������) https://huggingface.co/datasets/M4-ai/prm_dpo_pairs_cleaned
jondurbin/truthy-dpo-v0.1
(1,016������) https://huggingface.co/datasets/jondurbin/truthy-dpo-v0.1 ��лargilla��unalignment��M4-ai��jondurbin�ṩ��Դ���ݼ���
��ʼ��װ����Ŀ⣺
??pip?install?-U?transformers?datasets?accelerate?peft?trl?bitsandbytes?wandb??
һ����װ��ɣ����ǿ��Ե����Ҫ�Ŀ⣬����¼��W&B����ѡ����
????import?gc??
????import?os??
??????
????import?torch??
????import?wandb??
????from?datasets?import?load_dataset??
????from?google.colab?import?userdata??
????from?peft?import?LoraConfig,?PeftModel,?prepare_model_for_kbit_training??
????from?transformers?import?(??
????????AutoModelForCausalLM,??
????????AutoTokenizer,??
????????BitsAndBytesConfig,??
????????TrainingArguments,??
????????pipeline,??
????)??
????from?trl?import?ORPOConfig,?ORPOTrainer,?setup_chat_format??
??????
????wb_token?=?userdata.get('wandb')??
????wandb.login(key=wb_token)??
�������һ����µ�GPU���㻹Ӧ���ܹ�ʹ��Flash Attention�����滻Ĭ�ϵ����й�עʵ�֣���һ������Ч�ķ�ʽ��ʵ�֡�
????if?torch.cuda.get_device_capability()[0]?>=?8:??
????????!pip?install?-qqq?flash-attn??
????????attn_implementation?=?"flash_attention_2"??
????????torch_dtype?=?torch.bfloat16??
????else:??
????????attn_implementation?=?"eager"??
????????torch_dtype?=?torch.float16??
�����������ǽ�ʹ��bitsandbytes��4λ���ȼ���Llama 3 8Bģ�͡�Ȼ������ʹ��PEFTΪQLoRA����LoRA���á��һ�ʹ���˷����setup_chat_format()�������޸�ģ�ͺ�ΪChatML֧�ֵķִ����������Զ�Ӧ���������ģ�壬������������ƣ�������ģ�͵�Ƕ���Ĵ�С��ƥ���µĴʻ����С�� ��ע�⣬����Ҫ�ύ������ܷ���meta-llama/Meta-Llama-3-8B������Ҫ��¼�����Hugging Face�˻������ߣ�����Լ���δ��յ�ģ�͸�������NousResearch/Meta--Llama-3-8B��
????#?Model??
????base_model?=?"meta-llama/Meta-Llama-3-8B"??
????new_model?=?"OrpoLlama-3-8B"??
??????
????#?QLoRA?config??
????bnb_config?=?BitsAndBytesConfig(??
????????load_in_4bit=True,??
????????bnb_4bit_quant_type="nf4",??
????????bnb_4bit_compute_dtype=torch_dtype,??
????????bnb_4bit_use_double_quant=True,??
????)??
??????
????#?LoRA?config??
????peft_config?=?LoraConfig(??
????????r=16,??
????????lora_alpha=32,??
????????lora_dropout=0.05,??
????????bias="none",??
????????task_type="CAUSAL_LM",??
????????target_modules=['up_proj',?'down_proj',?'gate_proj',?'k_proj',?'q_proj',?'v_proj',?'o_proj']??
????)??
??????
????#?Load?tokenizer??
????tokenizer?=?AutoTokenizer.from_pretrained(base_model)??
??????
????#?Load?model??
????model?=?AutoModelForCausalLM.from_pretrained(??
????????base_model,??
????????quantization_config=bnb_config,??
????????device_map="auto",??
????????attn_implementation=attn_implementation??
????)??
????model,?tokenizer?=?setup_chat_format(model,?tokenizer)??
????model?=?prepare_model_for_kbit_training(model)??
����ģ���Ѿ�׼���ý���ѵ�������ǿ��Դ������ݼ������Ǽ���mlabonne/orpo-dpo-mix-40k����ʹ��apply_chat_template()��������chosen���͡�rejected����ת��ΪChatML��ʽ����ע�⣬��ֻʹ����1,000���������������������ݼ�����Ϊ���������Ứ��̫��ʱ�䡣
????dataset_name?=?"mlabonne/orpo-dpo-mix-40k"??
????dataset?=?load_dataset(dataset_name,?split="all")??
????dataset?=?dataset.shuffle(seed=42).select(range(10))??
??????
????def?format_chat_template(row):??
????????row["chosen"]?=?tokenizer.apply_chat_template(row["chosen"],?tokenize=False)??
????????row["rejected"]?=?tokenizer.apply_chat_template(row["rejected"],?tokenize=False)??
????????return?row??
??????
????dataset?=?dataset.map(??
????????format_chat_template,??
????????num_proc=?os.cpu_count(),??
????)??
????dataset?=?dataset.train_test_split(test_size=0.01)??
���ȣ�������Ҫ����һЩ�������� ѧϰ�ʣ��봫ͳ��SFT����DPO��ȣ�ORPOʹ�õ�ѧϰ�ʷdz��͡����ֵ8e-6����Ôʼ���ģ����¶�Ӧ��SFT��ѧϰ��1e-5��DPO��ѧϰ��5e-6���ҽ�����������΢���н������ӵ���Լ1e-6�� beta�����������еIJ�������Ĭ��ֵΪ0.1������Ôʼ���ĵ�һ����¼��ʾ�����ͨ�������о�ѡ������ ��������������󳤶Ⱥ�������С��������Ϊ�����ܶ��ʹ��VRAM���ڴ�������ԼΪ20 GB������������£����ǽ���ģ�ͽ���3-5�����ڵ�ѵ�������������ǽ����1�����ڡ� ������ǿ���ʹ��ORPOTrainer��ѵ��ģ�ͣ����䵱һ����װ����
????orpo_args?=?ORPOConfig(??
????????learning_rate=8e-6,??
????????beta=0.1,??
????????lr_scheduler_type="linear",??
????????max_length=1024,??
????????max_prompt_length=512,??
????????per_device_train_batch_size=2,??
????????per_device_eval_batch_size=2,??
????????gradient_accumulation_steps=4,??
????????optim="paged_adamw_8bit",??
????????num_train_epochs=1,??
????????evaluation_strategy="steps",??
????????eval_steps=0.2,??
????????logging_steps=1,??
????????warmup_steps=10,??
????????report_to="wandb",??
????????output_dir="./results/",??
????)??
??????
????trainer?=?ORPOTrainer(??
????????model=model,??
????????args=orpo_args,??
????????train_dataset=dataset["train"],??
????????eval_dataset=dataset["test"],??
????????peft_config=peft_config,??
????????tokenizer=tokenizer,??
????)??
????trainer.train()??
????trainer.save_model(new_model)??
��L4 GPU�϶���1000����������ģ��ѵ����Լ��Ҫ2��Сʱ�������Dz鿴W&B��ͼ��
��loss����ʱ���ܻ�Ó����Ͳ��ܻ�Ó���֮��IJ��첢�����ԣ�ƽ���߽��׼ȷ�ȷֱ���Ը���0��0.5��
��Ôʼ�����У���������
Anthropic/hh-rlhf
���ݼ���161k����������ѵ��ģ�ͽ�����10��epochs����������������е�ʱ��Ҫ���öࡣ���ǻ���Llama3������ʵ�飬�����Ѻõ����ҷ��������ǵ���־����лJiwoo Hong����
�ڱ��̵̳Ľ�β�������ǽ�QLoRA�����������ģ�ͺϲ������������͵�Hugging Face Hub��
????#?Flush?memory??
????del?trainer,?model??
????gc.collect()??
????torch.cuda.empty_cache()??
??????
????#?Reload?tokenizer?and?model??
????tokenizer?=?AutoTokenizer.from_pretrained(base_model)??
????model?=?AutoModelForCausalLM.from_pretrained(??
????????base_model,??
????????low_cpu_mem_usage=True,??
????????return_dict=True,??
????????torch_dtype=torch.float16,??
????????device_map="auto",??
????)??
????model,?tokenizer?=?setup_chat_format(model,?tokenizer)??
??????
????#?Merge?adapter?with?base?model??
????model?=?PeftModel.from_pretrained(model,?new_model)??
????model?=?model.merge_and_unload()??
??????
????model.push_to_hub(new_model,?use_temp_dir=False)??
????tokenizer.push_to_hub(new_model,?use_temp_dir=False)??
��ϲ�����������Llama3��mlabonne/OrpoLlama-3-8B�Ŀ���΢���������ʹ�����Hugging Face Space��������һ��notebook�������Լ���ʵ������ʹ����������ģ��ѵ�����㣬����W&B������ǿ�����������һ���ʹ��LLM AutoEval��Nous�Ļ�׼�����׼��Ͻ�����һЩ������
���ǵ�ORPO΢��ʵ�����൱��������������˻���ģ����ÿ����׼�����ϵ����ܡ��������˹���ģ����Һܿ�����ζ��������40k�����Ͻ���΢���������ܺõĽ����
���ڿ�Դ������˵������һ���������ĵ�ʱ�̣�Խ��Խ��ĸ���������Ȩ��ģ�ͱ���������Դ�Ϳ���Ȩ��ģ��֮��IJ����������С����΢���ǻ�ȡ������������ܵ���Ҫ���ߡ�
����ƪ�̳��У����ǽ�����ORPO�㷨��������������ν�SFT���ලʽ΢������RLHFͳһΪ��һ�Ĺ��̡�Ȼ������ʹ��TRL��Transformer Reinforcement Learning����һ�����Ƶ�ƫ�����ݼ��ϵ�Llama3-8B����΢��������ģ��չʾ�����˹���Ľ������ͻ����ORPO��Ϊ�µ�΢����ʽ��DZ����
��ϣ������а��������Ƽ�������Colab�ʼDZ���΢�����Լ���Llama3ģ�͡��ڽ����������У����ǽ�������δ��������������ݼ���������һ�����������ӵĵ㡣
������²ο��ԣ�https://huggingface.co/blog/mlabonne/orpo-llama-3
ʹ��Blender���ɳ���ģ��
�Ķ�ȫ����������ERA5�����ط���
�Ķ�Xpath���������﷨
�Ķ�����ѧϰ�������繹�����£�
�Ķ���ΪMateƷ��ʢ�䣺HarmonyOS NEXT�ӳ�����Ϸ���ܵõ�����ͷ�
�Ķ�ʵ�ֶ��󼯺���DataTable���໥ת��
�Ķ�Ӳ�̵Ļ���֪ʶ��ѡ��ָ��
�Ķ�������й��ƶ��ı�ͼ��ײ�
�Ķ�����NEXTԪ�����������ѿ����ϼ���Ʒ
�Ķ��ᳲ���С������������Ƽ��رշ���
�Ķ������ArcMap�����н���դ��ͼ���ز�������
�Ķ��㷨�����ݽṹ 1 - ģ��
�Ķ���Ѷ�����߿ͷ���Ӫ��ϵͳ����
�Ķ���Ѷ��Ƶҹ��ģʽ���ý̳�
�Ķ����ں���NEXT��Ѫ���Ŵ���������������
�Ķ�5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
�Ķ�Java����ģʽ����̬�����Ͷ�̬�����ĶԱȷ���
�Ķ�Win11�ʼDZ����Զ�����Ӧ�õ���ɫ����ʾ����
�Ķ�˼�� V1.5.6 ��׿��
��ս�귨 V7.5.0 ��׿��
У��������������׵������� V1.0 ��׿��
��˸֮�� V1.9.7 ��׿��
������Ե����� v1.0.4 ��׿��
������֮ŠV5.2.3 ��׿��
��������������Դ V1.0 ��׿��
���֮Ϣ V1.0 ��׿��
��ħ������������䣩 V1.0 ��׿��
���ں�������ϵ�����������������վ�����������������Ƽ�����
Ƶ�� ����Ƶ��������ר������������׿�������app����
�Ƽ� ��Ô���������°��������ܿ������ز���
���� ����ɫ������������ ���������ս������������
ɨ��ά�����������ֻ��汾��
ɨ��ά����������΢�Ź��ںţ�
��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]
��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������