### Challenge Description
Develop a complete pipeline to fine-tune the IBM Granite 3.1 LLM for interpreting solutions to the heat equation. The challenge broadly involves the following tasks:
1. Generating training data using numerical methods or by scraping relevant data.
2. Creating a fine-tuning pipeline for the LLM.
3. Evaluating the model's ability to provide meaningful physical interpretations of the PDE solutions.

### What We Provide
- Sample code for generating and visualizing data in VTK files on a unit square mesh.
- Sample code for loading the language model, making inferences, and creating submissions for the competition.

### What You Need to Do

#### Data Generation 
- Develop numerical solutions for the heat equation on a unit square mesh.
- Generate training and validation datasets by incorporating different variants of the heat equation (details provided in the dataset section)

#### LLM Pipeline
- Develop a data preprocessing pipeline: Prepare and transform the data for use in fine-tuning the language model.
- Implement a fine-tuning methodology: Fine-tune the model using the prepared datasets to optimize its performance.
- Document your approach and results in the code: Clearly explain your methodology, decisions, and outcomes within the codebase.

#### Bonus
- Implement alternative numerical methods: Explore and implement numerical methods like the Finite Element Method (FEM) or Finite Volume Method (FVM) using tools such as ParMoon or other solvers.
- Scrape relevant scientific literature or educational resources: Gather additional data or insights from reliable sources to enhance your pipeline.
- Generate solutions for different boundary conditions: Solve the PDE for a variety of boundary conditions to expand the dataset's versatility.
- Solve the PDE on a circular domain: Implement numerical solutions for a circular domain (unit radius centered at the origin) and use these results in training and validation datasets.
- Provide a GitHub repository: Share the GitHub link to your repository in the Kaggle notebook, ensuring the code is well-documented. Include a concise report summarizing your overall methodology to support better assessment.

### Submission Requirements
Participants must submit their code in a single Kaggle notebook with proper documentation.
- GitHub Repository Link: In the first cell of the notebook, participants must provide the GitHub repository link for their competition submission.
- Public Notebook: Participants are required to make their Jupyter notebook public after the competition deadline. Failure to do so will result in disqualification.

The GitHub repository should include:
1. Notebooks (.ipynb) or .py files containing:
   - Code for data generation (training and validation).
   - The preprocessing pipeline.
   - Model fine-tuning implementation.
   - Evaluation metrics and results.
2. A concise, to-the-point report detailing:
   - The methodology used.
   - Prompts and responses (in tabular format) utilized during training and inference.
   - The validation approach.
   - Analysis of results.

### Timeline
- Start Date: 18 Jan 2025
- End Date: 24 Jan 2025 (5:00 PM IST)

### Important Notes
1. Sample Notebook:
   - All participants must review the `sample_starting_code.ipynb` notebook on Kaggle to better understand the tasks, requirements, and the submission process.
2. Public Notebook Requirement:
   - Participants are required to make their Kaggle notebook public after the competition deadline.
   - A significant part of the assessment will rely on the documented code and the report provided in the GitHub repository.
   - Failure to comply will result in disqualification.
3. Dataset Details:
   - Refer to the Dataset Description section for further information.
4. IBM Granite Model Details:
   - Detailed information on the IBM Granite 3.1 language models is available [here](https://github.com/ibm-granite/granite-3.1-language-models).
   - There are six language models available, but it is strongly advised to use the model specified in sample_starting_code.py, as it is known to produce accurate results.
5. Screening Challenge:
   - This competition serves as a screening challenge for research positions at AIREX Lab.
6. Assessment Criteria:
   - Technical Skills: Demonstrate the ability to solve problems effectively.
   - Physical Understanding: Showcase your grasp of the underlying physical concepts.
   - Code Quality: High-quality, well-documented, and readable code is crucial.
   - Innovation: Creativity and innovative approaches will be highly valued.

### Resources
- [IBM Granite Repository](https://github.com/ibm-granite/granite-3.1-language-models) 

### FAQ
1. Can I use additional pre-trained models?
   - Answer: Fine-tuning and final inference must be performed exclusively on the IBM Granite 3.1 Language Models. However, multimodal approaches that incorporate other open-source models are highly appreciated.
2. Is team participation allowed?
   - Answer: No, this is strictly an individual competition.
3. Can I use external datasets?
   - Answer: Yes, using or scraping external datasets is encouraged, provided that proper citation and documentation are included.

### Updates and Communications
- Follow the Kaggle discussion forum for announcements
- Questions can be posted in the forum    
