{"id":13379264,"url":"https://github.com/mymusise/ChatGLM-Tuning","last_synced_at":"2025-03-13T05:30:49.580Z","repository":{"id":143247216,"uuid":"614922400","full_name":"mymusise/ChatGLM-Tuning","owner":"mymusise","description":"基于ChatGLM-6B + LoRA的Fintune方案","archived":false,"fork":false,"pushed_at":"2023-11-25T08:46:31.000Z","size":9541,"stargazers_count":3763,"open_issues_count":186,"forks_count":446,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-03-09T07:51:14.366Z","etag":null,"topics":["chatglm","chatgpt","lora","peft"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mymusise.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-03-16T15:31:15.000Z","updated_at":"2025-03-09T07:16:41.000Z","dependencies_parsed_at":"2023-11-25T09:43:11.007Z","dependency_job_id":"7caa3b46-e576-47e6-926d-cfa9ad244236","html_url":"https://github.com/mymusise/ChatGLM-Tuning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mymusise%2FChatGLM-Tuning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mymusise%2FChatGLM-Tuning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mymusise%2FChatGLM-Tuning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mymusise%2FChatGLM-Tuning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mymusise","download_url":"https://codeload.github.com/mymusise/ChatGLM-Tuning/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243350999,"owners_count":20276893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatglm","chatgpt","lora","peft"],"created_at":"2024-07-30T07:02:07.415Z","updated_at":"2025-03-13T05:30:46.428Z","avatar_url":"https://github.com/mymusise.png","language":"Python","funding_links":[],"categories":["ChatGLM","A01_文本生成_文本对话","Python","Chinese models","twitter"],"sub_categories":["Acknowledgement","大语言对话模型及数据","glm 6b"],"readme":"# ChatGLM-Tuning\n\n一种平价的chatgpt实现方案，基于清华的 [ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B) + LoRA 进行finetune.\n\n数据集: [alpaca](https://github.com/tatsu-lab/stanford_alpaca)\n\n有colab的同学可以直接在colab上尝试： \u003ca href=\"https://colab.research.google.com/github/mymusise/ChatGLM-Tuning/blob/master/examples/finetune.ipynb\"\u003e\n        \u003cimg alt=\"Build\" src=\"https://colab.research.google.com/assets/colab-badge.svg\"\u003e\n    \u003c/a\u003e\n\n\n[官方ptuning代码](https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning)\n\n\n## Demo\n\n- [开源版的文心一言](https://github.com/visual-openllm/visual-openllm)\n\n\n## S1 Finetune\n\n### 准备\n\n- 显卡: 显存 \u003e= 16G (最好24G或者以上)\n- 环境：\n- - python\u003e=3.8\n- - cuda\u003e=11.6, cupti, cuDNN, TensorRT等深度学习环境\n- - pip3 install -r requirements.txt\n其中requirements.txt中的安装包bitsandbytes 建议安装0.41.2.post2这个版本，以前的版本可能会提示报错：\n        bitsandbytes/libbitsandbytes_cpu.so: undefined symbol: cget_col_row_stats\n\n### 数据预处理\n\n\n转化alpaca数据集为jsonl\n\n```bash\npython cover_alpaca2jsonl.py \\\n    --data_path data/alpaca_data.json \\\n    --save_path data/alpaca_data.jsonl \\\n    \n```\n\ntokenization\n\n```bash\npython tokenize_dataset_rows.py \\\n    --jsonl_path data/alpaca_data.jsonl \\\n    --save_path data/alpaca \\\n    --max_seq_length 200 \\ \n    --skip_overlength  False\n    --chatglm_path model_path/chatglm\n    --version v1                 \n    \n```\n\n- `--jsonl_path` 微调的数据路径, 格式jsonl, 对每行的['context']和['target']字段进行encode\n- `--save_path` 输出路径\n- `--max_seq_length` 样本的最大长度\n- `--chatglm_path` 导入模型的路径（可以选择chatglm或chatglm2的不同路径）\n- `--version` 模型的版本（v1指chatglm,v2指chatglm2）\n\n### 训练\n\n```bash\npython finetune.py \\\n    --dataset_path data/alpaca \\\n    --lora_rank 8 \\\n    --per_device_train_batch_size 6 \\\n    --gradient_accumulation_steps 1 \\\n    --max_steps 52000 \\\n    --save_steps 1000 \\\n    --save_total_limit 2 \\\n    --learning_rate 1e-4 \\\n    --fp16 \\\n    --remove_unused_columns false \\\n    --logging_steps 50 \\\n    --output_dir output\n    --chatglm_path model_path/chat_glm\n```\n\n### 推理\n\n参考 [infer.ipynb](infer.ipynb)\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eFinetune前后对比\u003c/b\u003e\u003c/summary\u003e\n\n利用Alpaca数据集合对ChatGLM-6B Finetune后，在Alpaca数据集上表现得更好:\n- `Answer:` 是模型的输出\n- `#### Answer:` 是原答案\n![](https://user-images.githubusercontent.com/6883957/226977555-c00c796f-4fdb-4613-810a-8b9a6068bb1b.jpeg)\n\n\n\u003c/details\u003e\n\n\n## S2. Reward Model\n\n## S3. PPO\n\n\n## LoRA\n\n| LoRA                                  | Dataset      |\n| ------------------------------------- | ------------ |\n| mymusise/chatglm-6b-alpaca-lora       | Alpaca       |\n| mymusise/chatglm-6b-alpaca-zh-en-lora | Alpaca-zh-en |\n| *(on the way)*                        | Alpaca-zh    |\n\n### 使用预训练好的LoRA\n\n参考 [examples/infer_pretrain.ipynb](https://colab.research.google.com/github/mymusise/ChatGLM-Tuning/blob/master/examples/infer_pretrain.ipynb)\n\n\n# TODO:\n\n- ~~bs \u003e 1 support~~\n- 使用中文数据\n- 加入RLHF","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmymusise%2FChatGLM-Tuning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmymusise%2FChatGLM-Tuning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmymusise%2FChatGLM-Tuning/lists"}