代码生成模型
模型简介
此文件夹主要包含微调qwen7bchat模型得到的参数。微调后的模型主要有以下功能:
- 1. 给出⼀个询问, 例如: "使⽤python写快排.", 模型可以给出正确的示例代码(以及适当的代码注释). 需要⽀持python, C, C++等. 输出的代码需被```环绕。
- 2. 具有⾃我认知. 询问它是谁, 它的开发者是谁, 可以正确的进⾏回答
Clone with HTTP
git clone https://www.modelscope.cn/Marmeladov/Marmeladov_Coder_Test_St.git
实验环境
- python>=3.8
- pytorch>=2.0.0
- transformers==4.32.0
- swift==1.5.3
- CUDA 11.4
训练方法
数据集:
codealpacaen: https://modelscope.cn/datasets/wyj123456/codealpacaen. leetcode-solutions-python: https://modelscope.cn/datasets/AI-ModelScope/leetcode-solutions-python. CodeExercise-Python-27k: https://modelscope.cn/datasets/codefuse-ai/CodeExercise-Python-27k. Evol-instruction-66k: https://modelscope.cn/datasets/codefuse-ai/Evol-instruction-66k.微调模型:ModelType.qwen17b_chat: https://modelscope.cn/models/qwen/Qwen-7B-Chat
微调方法:swift
sft_args = SftArguments( model_type=ModelType.qwen_7b_chat, #微调qwen_7b_chat模型 sft_type='lora', #使用lora微调 train_dataset_sample=10000, #训练数据集采样10000条 dataset=[DatasetName.codefuse_python_en, DatasetName.leetcode_python_en, DatasetName.code-alpaca-en, DatasetName.codefuse-evol-instruction-zh], #使用的数据集 self_cognition_sample=500, #自我认知参数 model_name=['代码助⼿'], #微调后模型名 model_author=['Marme'], #微调作者 push_to_hub=True, #上传到modelscope社区 hub_model_id='Marmeladov/Marmeladov_Coder_Test_St', hub_token='...', output_dir='output') #checkpoint输出目录
示例代码
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import torch
from swift.llm import (InferArguments, infer_main)
torch.cuda.empty_cache()
infer_args = InferArguments(
ckpt_dir='../Marmeladov_Coder_Test_St',
load_dataset_config=True,
eval_human=True,
do_sample=False)
result = infer_main(infer_args)
...
<<< 你好
你好!有什么我可以帮助您的吗?
--------------------------------------------------
<<< 你这作者是谁?
我是由Marme开发的语言模型,代码编写是由我的开发者团队完成的。
--------------------------------------------------
<<< 你的名字是?
我叫代码助⼿。
--------------------------------------------------
<<< 使用python写一段快速排序算法
```python
def quick_sort(arr):
"""
快速排序算法
参数:
arr (list): 待排序的列表
返回:
list: 排序后的列表
"""
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 示例
arr = [3,6,8,10,1,2,1]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
这个代码定义了一个名为`quick_sort`的函数,它接受一个列表作为参数。如果列表的长度小于或等于1,那么就直接返回该列表,因为长度为1或0的列表已经是有序的。
否则,选择一个基准值(这里选择列表的中间元素),然后将列表分为三部分:小于基准值的元素、等于基准值的元素和大于基准值的元素。然后对小于和大于基准值的部分递归地调用`quick_sort`函数,最后将结果合并起来。
在示例中,我们创建了一个列表`arr`,并使用`quick_sort`函数对其进行排序。最后打印出排序后的结果。
--------------------------------------------------
评论