模型:

TheBloke/WizardCoder-15B-1.0-GGML

英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

WizardLM's WizardCoder 15B 1.0 GGML

这些文件是 WizardLM's WizardCoder 15B 1.0 的GGML格式的模型文件。

请注意,这些GGML与llama.cpp或目前的text-generation-webui不兼容。请参阅下面的已知与这些模型文件工作的工具列表。

可用的存储库

提示模板

Below is an instruction that describes a task. Write a response that appropriately completes the request

### Instruction: prompt

### Response:

实时演示

Matt Hoeffner 在绝地中放了一个演示这个模型的实时空间:

兼容性

这些文件与llama.cpp不兼容。

当前可以使用它们的是:

如果有其他可用的选项,我会尽力在这里更新它们(如果我遗漏了,请在社区选项卡中告诉我!)

使用GPT4All-UI的教程

提供的文件

Name Quant method Bits Size Max RAM required Use case
WizardCoder-15B-1.0.ggmlv3.q4_0.bin q4_0 4 10.75 GB 13.25 GB 4-bit.
WizardCoder-15B-1.0.ggmlv3.q4_1.bin q4_1 4 11.92 GB 14.42 GB 4-bit. Higher accuracy than q4_0 but not as high as q5_0. However has quicker inference than q5 models.
WizardCoder-15B-1.0.ggmlv3.q5_0.bin q5_0 5 13.09 GB 15.59 GB 5-bit. Higher accuracy, higher resource usage and slower inference.
WizardCoder-15B-1.0.ggmlv3.q5_1.bin q5_1 5 14.26 GB 16.76 GB 5-bit. Even higher accuracy, resource usage and slower inference.
WizardCoder-15B-1.0.ggmlv3.q8_0.bin q8_0 8 20.11 GB 22.61 GB 8-bit. Almost indistinguishable from float16. High resource use and slow. Not recommended for most users.

Discord

如需进一步支持,以及关于这些模型和人工智能的讨论,请加入我们:

TheBloke AI's Discord server

感谢以及如何贡献

感谢 chirper.ai 团队!

我有很多人问我是否可以做出贡献。我喜欢提供模型和帮助人们,我很愿意能够花更多时间做这些事情,以及扩展到新的项目,如细调/训练。

如果您有能力和意愿进行贡献,我将非常感激,并将帮助我继续提供更多的模型,并开始进行新的人工智能项目。

捐赠者将在任何以及所有的AI/LLM/模型问题和请求上获得优先支持,可以进入私人Discord聊天室,并享受其他福利。

特别感谢:CarbonQuill的Luke,Aemon Algiz,Dmitriy Samsonov。

Patreon特别提到:Oscar Rangel,Eugene Pentland,Talal Aujan,Cory Kujawski,Luke,Asp the Wyvern,Ai Maven,Pyrater,Alps Aficionado,senxiiz,Willem Michiel,Junyu Yang,trip7s trip,Sebastain Graf,Joseph William Delisle,Lone Striker,Jonathan Leane,Johann-Peter Hartmann,David Flickinger,Spiking Neurons AB,Kevin Schuppel,Mano Prime,Dmitriy Samsonov,Sean Connelly,Nathan LeClaire,Alain Rossmann,Fen Risland,Derek Yates,Luke Pendergrass,Nikolai Manek,Khalefa Al-Ahmad,Artur Olbinski,John Detwiler,Ajan Kanaga,Imad Khwaja,Trenton Dambrowitz,Kalila,vamX,webtim,Illia Dulskyi。

感谢所有慷慨的赞助者和捐赠者!

原始模型卡片:WizardLM的WizardCoder 15B 1.0

这是WizardCoder的完整版本。

存储库: https://github.com/nlpxucan/WizardLM/tree/main/WizardCoder

Twitter: https://twitter.com/WizardLM_AI/status/1669109414559911937

论文:即将推出,使用全新的Evol+方法进行代码LLM。

演示(目前仅支持与代码相关的英语指令):

Demo Backup Demo1 Backup Demo2 Backup Demo3

WizardCoder:将Evol-Instruct应用于代码大型语言模型

为了开发我们的WizardCoder模型,我们首先针对编码任务调整了Evol-Instruct方法。这涉及将提示定制为与代码相关的域。随后,我们使用新创建的遵循指令的训练集对Code LLM StarCoder进行了微调。

新闻

将WizardCoder与闭源模型进行比较。

?下图显示了我们的WizardCoder在这个基准测试中获得第三名,超过了Claude-Plus(59.8对53.0)和Bard(59.8对44.5)。值得注意的是,我们的模型相对于这些模型具有更小的尺寸。

❗注意:在这项研究中,我们从 LLM-Humaneval-Benchmarks 复制了HumanEval和HumanEval+的得分。值得注意的是,所有提到的模型都使用单次尝试为每个问题生成代码解决方案,并报告结果通过率百分比。我们的WizardCoder使用贪婪解码生成答案,并使用相同的测试进行测试。 code

将WizardCoder与开源模型进行比较。

下表清楚地证明了我们的WizardCoder在所有开源模型上具有显著的性能优势。❗如果您对我们模型的不同得分(57.3和59.8)感到困惑,请查看备注信息。

Model HumanEval Pass@1 MBPP Pass@1
CodeGen-16B-Multi 18.3 20.9
CodeGeeX 22.9 24.4
LLaMA-33B 21.7 30.2
LLaMA-65B 23.7 37.7
PaLM-540B 26.2 36.8
PaLM-Coder-540B 36.0 47.0
PaLM 2-S 37.6 50.0
CodeGen-16B-Mono 29.3 35.3
Code-Cushman-001 33.5 45.9
StarCoder-15B 33.6 43.6*
InstructCodeT5+ 35.0 --
WizardLM-30B 1.0 37.8 --
WizardCoder-15B 1.0 57.3 51.8

❗注意:复现了MBPP上StarCoder的结果。

❗注意:上表对我们的WizardCoder与其他模型在HumanEval和MBPP基准测试上进行了全面比较。我们遵循以前研究中概述的方法,为每个问题生成20个样本,以估计pass@1分数,并使用相同的测试进行评估。 OpenAI 报告的GPT4和GPT3.5的得分分别为67.0和48.1(可能是早期版本的GPT4&3.5)。

给予反馈的呼吁

我们欢迎每个人使用您的专业和困难的指令来评估WizardCoder,并向我们展示性能差的示例以及您对更好的建议。我们现在正在致力于改进Evol-Instruct,并希望在下一个版本的WizardCoder中解决现有的缺点和问题。之后,我们将公开最新的Evol-Instruct算法的代码和流程,并与您一起改进它。

内容

  • 在线演示

  • 微调

  • 推断

  • 评估

  • 引用

  • 声明

  • 在线演示

    我们将尽可能长时间地为您提供最新型号的试用版。如果某个链接无效,请尝试另一个链接。同时,请尽可能多地尝试您在工作和生活中遇到的真实且具有挑战性的与代码相关的问题。我们将根据您的反馈不断改进我们的模型。

    微调

    我们使用 Llama-X 中修改的代码train.py来微调WizardCoder。我们使用以下超参数对StarCoder-15B进行微调:

    Hyperparameter StarCoder-15B
    Batch size 512
    Learning rate 2e-5
    Epochs 3
    Max length 2048
    Warmup step 30
    LR scheduler cosine

    要复现我们对WizardCoder的微调,请按照以下步骤进行操作:

  • 按照 Llama-X 的说明,安装环境,下载训练代码并部署。(注意:deepspeed==0.9.2和transformers==4.29.2)
  • 用我们repo中的train_wizardcoder.py(src/train_wizardcoder.py)替换train.py
  • 登录Huggingface:
  • huggingface-cli login
    
  • 执行以下训练命令:
  • deepspeed train_wizardcoder.py \
        --model_name_or_path "bigcode/starcoder" \
        --data_path "/your/path/to/code_instruction_data.json" \
        --output_dir "/your/path/to/ckpt" \
        --num_train_epochs 3 \
        --model_max_length 2048 \
        --per_device_train_batch_size 16 \
        --per_device_eval_batch_size 1 \
        --gradient_accumulation_steps 4 \
        --evaluation_strategy "no" \
        --save_strategy "steps" \
        --save_steps 50 \
        --save_total_limit 2 \
        --learning_rate 2e-5 \
        --warmup_steps 30 \
        --logging_steps 2 \
        --lr_scheduler_type "cosine" \
        --report_to "tensorboard" \
        --gradient_checkpointing True \
        --deepspeed configs/deepspeed_config.json \
        --fp16 True
    

    推断

    我们提供了用于WizardCoder的解码脚本,该脚本读取输入文件并为每个样本生成相应的响应,最后将它们合并到输出文件中。

    您可以在src/ inference_wizardcoder.py 中指定base_model、input_data_path和output_data_path来设置解码模型、输入文件路径和输出文件路径。

    pip install jsonlines
    

    解码命令为:

    python src\inference_wizardcoder.py \
        --base_model "/your/path/to/ckpt" \
        --input_data_path "/your/path/to/input/data.jsonl" \
        --output_data_path "/your/path/to/output/result.jsonl"
    

    data.jsonl的格式应为:

    {"idx": 11, "Instruction": "Write a Python code to count 1 to 10."}
    {"idx": 12, "Instruction": "Write a Jave code to sum 1 to 10."}
    

    在我们的WizardCoder的src/inference_wizardcoder.py中的提示为:

    Below is an instruction that describes a task. Write a response that appropriately completes the request.
    
    ### Instruction:
    {instruction}
    
    ### Response:
    

    评估

    我们提供了在HumanEval上对WizardCoder进行评估的脚本。

  • 按照 HumanEval 的说明,安装环境。
  • 运行以下脚本生成答案。
  • model="/path/to/your/model"
    temp=0.2
    max_len=2048
    pred_num=200
    num_seqs_per_iter=2
    
    output_path=preds/T${temp}_N${pred_num}
    
    mkdir -p ${output_path}
    echo 'Output path: '$output_path
    echo 'Model to eval: '$model
    
    # 164 problems, 21 per GPU if GPU=8
    index=0
    gpu_num=8
    for ((i = 0; i < $gpu_num; i++)); do
      start_index=$((i * 21))
      end_index=$(((i + 1) * 21))
    
      gpu=$((i))
      echo 'Running process #' ${i} 'from' $start_index 'to' $end_index 'on GPU' ${gpu}
      ((index++))
      (
        CUDA_VISIBLE_DEVICES=$gpu python humaneval_gen.py --model ${model} \
          --start_index ${start_index} --end_index ${end_index} --temperature ${temp} \
          --num_seqs_per_iter ${num_seqs_per_iter} --N ${pred_num} --max_len ${max_len} --output_path ${output_path}
      ) &
      if (($index % $gpu_num == 0)); then wait; fi
    done
    
  • 运行后处理代码src/process_humaneval.py以收集来自所有答案文件的代码完成。
  • output_path=preds/T${temp}_N${pred_num}
    
    echo 'Output path: '$output_path
    python process_humaneval.py --path ${output_path} --out_path ${output_path}.jsonl --add_prompt
    
    evaluate_functional_correctness ${output_path}.jsonl
    

    引用

    如果您在此存储库中使用数据或代码,请引用。

    @misc{luo2023wizardcoder,
          title={WizardCoder: Empowering Code Large Language Models with Evol-Instruct}, 
          author={Ziyang Luo and Can Xu and Pu Zhao and Qingfeng Sun and Xiubo Geng and Wenxiang Hu and Chongyang Tao and Jing Ma and Qingwei Lin and Daxin Jiang},
          year={2023},
    }
    

    声明

    与此项目相关的资源(包括代码、数据和模型权重)仅限于学术研究目的,不能用于商业目的。任何版本的WizardCoder生成的内容都受到无法控制的变量(如随机性)的影响,因此无法保证输出结果的准确性。该项目不对模型输出的内容承担任何法律责任,也不对使用相关资源和输出结果导致的任何损失承担责任。