代码助手(作业)

我要开发同款
匿名用户2024年07月31日
36阅读
所属分类aiPytorch
开源地址https://modelscope.cn/models/Woodpecker/Code_Assistant
授权协议Apache License 2.0

作品详情

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;
   }
   ```
   --------------------------------------------------
   <<< 你是谁
   我是代码助手,可以回答问题并提供帮助。
   --------------------------------------------------
   <<< 你的创作者是谁
   我是由智慧探索团开发的。我的创造不是由一个人负责完成的,而是由许多人工智能工程师和科学家一起努力。
   --------------------------------------------------
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论