🚀 KoreanLM:韩语语言模型项目
KoreanLM 是一个旨在开发韩语语言模型的开源项目。当前,大部分语言模型都聚焦于英语,导致韩语的学习相对不足,并且在分词过程中存在效率低下的情况。为了解决这些问题,提供专门针对韩语优化的语言模型,我们启动了 KoreanLM 项目。
📦 安装指南
KoreanLM 通过 GitHub 仓库进行分发。若要使用该项目,可按以下步骤进行安装:
git clone https://github.com/quantumaikr/KoreanLM.git
cd KoreanLM
pip install -r requirements.txt
💻 使用示例
基础用法
以下是通过 transformers
库加载模型和分词器的示例:
import transformers
model = transformers.AutoModelForCausalLM.from_pretrained("quantumaikr/KoreanLM")
tokenizer = transformers.AutoTokenizer.from_pretrained("quantumaikr/KoreanLM")
🔧 训练
全量参数微调
torchrun --nproc_per_node=4 --master_port=1004 train.py \
--model_name_or_path quantumaikr/KoreanLM \
--data_path korean_data.json \
--num_train_epochs 3 \
--cache_dir './data' \
--bf16 True \
--tf32 True \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 4 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 500 \
--save_total_limit 1 \
--learning_rate 2e-5 \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--fsdp "full_shard auto_wrap" \
--fsdp_transformer_layer_cls_to_wrap 'OPTDecoderLayer' \
pip install deepspeed
torchrun --nproc_per_node=4 --master_port=1004 train.py \
--deepspeed "./deepspeed.json" \
--model_name_or_path quantumaikr/KoreanLM \
--data_path korean_data.json \
--num_train_epochs 3 \
--cache_dir './data' \
--bf16 True \
--tf32 True \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 4 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 2000 \
--save_total_limit 1 \
--learning_rate 2e-5 \
--weight_decay 0. \
--warmup_ratio 0.03 \
LoRA 微调
python finetune-lora.py \
--base_model 'quantumaikr/KoreanLM' \
--data_path './korean_data.json' \
--output_dir './KoreanLM-LoRA' \
--cache_dir './data'
📈 推理
python generate.py \
--load_8bit \
--share_gradio \
--base_model 'quantumaikr/KoreanLM' \
--lora_weights 'quantumaikr/KoreanLM-LoRA' \
--cache_dir './data'
📚 详细文档
项目目标
- 开发韩语专用语言模型:开发能够更准确理解和生成韩语的语言模型,反映韩语的语法、词汇和文化特性。
- 引入高效分词方式:引入在韩语文本分词过程中能够进行高效且准确分析的新分词方式,提高语言模型的性能。
- 改善大语言模型的可用性:解决当前大型语言模型企业难以对自有数据进行微调的问题,通过调整韩语语言模型的大小来提高可用性,使其更易于应用于自然语言处理任务。
预训练模型公开及网络演示
训练模型
* 演示链接将在后续公布
贡献方式
- 提出问题:请将与 KoreanLM 项目相关的问题或改进建议以问题的形式提出。
- 编写代码:您可以编写代码来添加改进内容或新功能。请通过拉取请求(Pull Request)提交编写好的代码。
- 编写和翻译文档:参与项目的文档编写或翻译工作,提高项目的质量。
- 测试并反馈:在使用项目过程中发现的错误或改进建议,请给予反馈,这将对项目有很大帮助。
📄 许可证
KoreanLM 项目遵循 Apache 2.0 许可证。使用该项目时,请遵守许可证中的注意事项。
📧 技术咨询
如果您有与 KoreanLM 项目相关的问题,请通过电子邮件或 GitHub 问题进行咨询。希望这个项目能对韩语语言模型的研究和开发有所帮助,期待您的关注和参与。
邮箱:hi@quantumai.kr
🔗 参考项目
本仓库的实现受到了 open_llama、Stanford Alpaca 和 alpaca-lora 项目的启发。
🖼️ 项目图标