Training procedure
Framework versions
- SWIFT 1.5.3
Base model information
- BaseModel Class QWenLMHeadModel
代码助手(作业)
Code_Assistant
简介:
代码助手语言模型,支持python,java,C++。具有自我认知能力
实验环境:
Ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.11.0
8核32G A10 24G显存
训练方法:
模型:qwen1_8b
数据集:
- alpaca_zh
- codealpacaen
- leetcodepythonen
- codefusepythonen
- codefuseevolinstruction_zh
超参数:
sft_type='lora',
train_dataset_sample=20000,
- 示例代码:
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import torch
from swift.llm import (
DatasetName, InferArguments, ModelType, SftArguments,
infer_main, sft_main, app_ui_main, merge_lora_main
)
model_type = ModelType.qwen_1_8b
sft_args = SftArguments(
model_type=model_type,
sft_type='lora',
train_dataset_sample=20000,
dataset=[DatasetName.alpaca_zh,DatasetName.code_alpaca_en,DatasetName.leetcode_python_en,DatasetName.codefuse_python_en,DatasetName.codefuse_evol_instruction_zh],
output_dir='output',
self_cognition_sample=500,
model_name=['代码助手', 'Code Assistant'],
model_author=['智慧探索团', 'Wisdom Questers'],
lora_target_modules='ALL',
)
result = sft_main(sft_args)
best_model_checkpoint = result['best_model_checkpoint']
print(f'best_model_checkpoint: {best_model_checkpoint}')
torch.cuda.empty_cache()
infer_args = InferArguments(
ckpt_dir=best_model_checkpoint,
load_dataset_config=True,
eval_human=True,
do_sample=False)
result = infer_main(infer_args)
- 推理效果:
<<< 帮我用python写一个排序
函数在Python中写一个函数,该函数接受一个列表作为输入,并且按照给定的准则对其内容进行排序。例如, 可以让这个函数按升序排列, 或者降序排列。
以下是一个按字符串长度排序的示例:
```python
def mySortedList(list):
# 如果列表为空或只有一个元素, 就返回其本身
if not list:
return list
if len(list) == 1:
return [list]
# 根据字符串的长度进行排序
sorted_list = sorted(zip(*[l for l in list for _ in l]))
return sorted_list[1:] or sorted_list[0]
```
--------------------------------------------------
<<< 帮我用java写一个排序
算法在Java中实现一个简单的冒泡排序算法可能会很简单。下面是简单冒泡排序的算法实现:
```java
public static void bubbleSort(int[] arr) {
int n = arr.length;
boolean swapped;
do {
swapped = false;
for (int i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
// 交换两数之间的值
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
//如果还没有执行过一趟,那么说明还有没有可以比较的元素;
if (!swapped)
break;
} while (true);
}
```
该算法通过在每一趟比较中,不断将最左的数“推动”到最右的位置。最后,当所有的数都被“推动”到了数组的结尾时,我们就可以得到一个按升序排列的数组。
--------------------------------------------------
<<< 用C++写一个排序代码
C++中有多个内置排序算法,例如插入排序、选择排序、冒泡排序、快速排序、归并排序等。这些算法各有特点,性能也有所不同。根据具体情况,可以采用不同的算法来排序数据。例如如果数据量较小,可以直接使用插入排序或简单选择排序这类算法;如果数据量较大,那么可以使用归并排序或快速排序这类算法进行处理。以下是一个简单的例子来演示如何使用
归并排序进行数据排序:
```c++
#include <iostream>
using namespace std;
// 归并排序算法
void Merge(int arr[], int left, int mid, int right)
{
// 分成两半
int* i = arr + left;
int* j = arr + mid;
// 分别排序
for (int k=0; k<mid-left+1; k++)
{
while (i[k]< j[k]) cout<<arr[k]<<' ';
cout<<arr[r-k]<<' ';
i++; j--;
}
cout<<endl;
// 并行合并
for (int k=0; k<mid-left && (i[k]==j[k]|| i[k]< j[k]); k++) cout<<arr[k]<<' ';
cout<<arr[mid-left]<<endl;
// 重新合并
int* p = arr + mid;
int* q = arr + left;
for (int i=p; i<q; i++)
{
swap(*i,*q); // 交换数组的位置
}
}
int main()
{
int arr[100], n;
cout<<"请输入排序数据:";
cin>>n;
// 输出排序前的数据
cout<<"排序前的数据:";
for (int i=0; i<n; i++)
{
cout<<arr[i]<<' ';
}
// 输入排序数据
int* input = new int[n];
cout<<"输入排序数据:";
for (int i=0; i<n; i++)
{
cin>>input[i];
}
Merge(input, 0, n-1);
cout<<"排序后的结果:";
for (int i=0; i<n; i++)
{
cout<<arr[i]<<' ';
}
return 0;
}
```
--------------------------------------------------
<<< 你是谁
我是代码助手,可以回答问题并提供帮助。
--------------------------------------------------
<<< 你的创作者是谁
我是由智慧探索团开发的。我的创造不是由一个人负责完成的,而是由许多人工智能工程师和科学家一起努力。
--------------------------------------------------
评论