Skip to content

This is the official code repository of MoTCoder: Elevating Large Language Models with Modular of Thought for Challenging Programming Tasks.

Notifications You must be signed in to change notification settings

dvlab-research/MoTCoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoTCoder: Elevating Large Language Models with Modular of Thought for Challenging Programming Tasks

• 🤗 Data • 🤗 MoTCoder-32B • 🤗 MoTCoder-7B • 🐱 Code • 📃 Paper

PWC PWC

Large Language Models (LLMs) have showcased impressive capabilities in handling straightforward programming tasks. However, their performance tends to falter when confronted with more challenging programming problems. We observe that conventional models often generate solutions as monolithic code blocks, restricting their effectiveness in tackling intricate questions. To overcome this limitation, we present Module-of-Thought Coder (MoTCoder). We introduce a framework for MoT instruction tuning, designed to promote the decomposition of tasks into logical sub-tasks and sub-modules. Our investigations reveal that, through the cultivation and utilization of sub-modules, MoTCoder significantly improves both the modularity and correctness of the generated solutions, leading to substantial pass@1 improvements of 5.9% on APPS and 5.8% on CodeContests. MoTCoder also achieved significant improvements in self-correction capabilities, surpassing the current SOTA by 3.3%. Additionally, we provide an analysis of between problem complexity and optimal module decomposition and evaluate the maintainability index, confirming that the code generated by MoTCoder is easier to understand and modify, which can be beneficial for long-term code maintenance and evolution. Our codes are available at https://github.com/dvlab-research/MoTCoder.

impression

Performance

APPS

Performance on APPS

CodeContests

Performance on CodeContests

Reflection

Performance on Reflection

Evaluation

Environment

To set up the environment, run:

pip install -e eval/requirements.txt

Model Preparation

Download MoTCoder-7B-v1.5 and organize the files as follows:

- models 
    - MoTCoder-7B-v1.5

Data Preparation

  1. Download the datasets APPS and codecontests, then structure your directories like this:
- data 
    - apps
    - code_contests
  1. Run the following script to prepare the test data:
python eval/dataset/data.py

Run Evaluation

Execute the scripts below to perform the evaluation:

# For APPS and CodeContests datasets
bash eval/scripts/eval_motcoder_apps_codecontests.sh

# For Fix
bash eval/scripts/eval_motcoder_fix.sh

Training

Environment

We use LLaMAFactory to train our model. Set up the environment with:

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

Data Preparation

Add the following entry to LLaMA-Factory/data/dataset_info.json:

"motcode": {
    "hf_hub_url": "JingyaoLi/MoT-Code-350K"
}

Run Training

Navigate to the LLaMA-Factory directory and use the following commands to start training:

cd LLaMA-Factory
# For multi-GPU
llamafactory-cli train train/configs/MoTCoder-7B-Instruct-sft-2e-06-mot.yaml
# For single-GPU
FORCE_TORCHRUN=1 llamafactory-cli train train/configs/MoTCoder-7B-Instruct-sft-2e-06-mot.yaml

Citation

If you find our work useful, please consider citing it.

@misc{li2025motcoderelevatinglargelanguage,
      title={MoTCoder: Elevating Large Language Models with Modular of Thought for Challenging Programming Tasks}, 
      author={Jingyao Li and Pengguang Chen and Bin Xia and Hong Xu and Jiaya Jia},
      year={2025},
      eprint={2312.15960},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2312.15960}, 
}

About

This is the official code repository of MoTCoder: Elevating Large Language Models with Modular of Thought for Challenging Programming Tasks.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published