nlpctx's picture
Upload folder using huggingface_hub
a2c3f1f verified
|
raw
history blame
4.88 kB

Java Code Optimizer

A web-based interface for optimizing Java code using a fine-tuned CodeT5-small model.

Overview

This application provides a user-friendly web interface to optimize Java code using a fine-tuned Salesforce/codet5-small model. The model has been trained on Java optimization tasks and can transform verbose or inefficient Java code into more optimal versions.

Features

  • πŸš€ Real-time Optimization: Get instant optimization suggestions for your Java code
  • 🎯 Specialized Model: Fine-tuned specifically for Java code optimization tasks
  • πŸ’» GPU/CPU Support: Automatically utilizes GPU if available, falls back to CPU
  • 🎨 Modern Interface: Clean, responsive design with dark/light mode support
  • πŸ“š Example Cases: Pre-loaded examples to demonstrate optimization capabilities
  • πŸ” Health Monitoring: Real-time status of model loading and device utilization

Model Information

  • Base Model: Salesforce/codet5-small
  • Training Data: ~6K training / 680 validation Java optimization pairs
  • Framework: HuggingFace Transformers with Seq2SeqTrainer
  • Optimization Focus: Java code refactoring and performance improvements

Installation & Setup

Prerequisites

  • Python 3.8+
  • Git
  • Internet connection (for initial model loading)

Step-by-Step Instructions

  1. Clone/Navigate to the Project Directory

    cd ~/model/java_optimizer
    
  2. Activate the Virtual Environment

    source ~/Python/.venv/bin/activate
    
  3. Install Required Dependencies

    pip install -r requirements.txt
    
  4. Verify Model Files Exist The application expects the fine-tuned model to be in /home/ssp/model/codet5-fast/. You should see files like:

    • config.json
    • model.safetensors
    • tokenizer_config.json
    • vocab.json
    • merges.txt
  5. Run the Application

    python app.py
    
  6. Access the Web Interface Open your web browser and navigate to:

    http://localhost:5000
    

Usage

  1. Enter Java Code: Type or paste your Java code into the input textarea
  2. Click Optimize: Press the "⚑ Optimize Code" button
  3. View Results: The optimized code will appear in the output textarea
  4. Try Examples: Click on any of the pre-loaded examples to test the optimizer

Example Optimizations

The model has been trained to recognize and optimize common Java patterns:

  • Switch Expressions: Converting verbose switch statements to switch expressions
  • Collection Operations: Replacing manual iterator removal with removeIf()
  • String Handling: Optimizing string concatenation with StringBuilder
  • And more...

API Endpoints

GET /

  • Returns the main HTML interface

POST /optimize

  • Request Body: { "code": "your Java code here" }
  • Response:
    {
      "original": "input Java code",
      "optimized": "optimized Java code"
    }
    
  • Error Response: { "error": "error message" }

GET /health

  • Returns application health status including model loading state and device info

GET /model-info

  • Returns information about the model files and size

Troubleshooting

Common Issues

  1. Model Not Loading

    • Verify the model directory /home/ssp/model/codet5-fast/ exists
    • Check that all required files are present
    • Ensure you have sufficient disk space and memory
  2. CUDA/GPU Issues

    • The application will automatically fall back to CPU if GPU is unavailable
    • To force CPU usage, modify the DEVICE variable in app.py
  3. Port Already in Use

    • Change the port in app.py (line with app.run())
    • Or stop the existing process using port 5000
  4. Dependencies Missing

    • Run pip install torch transformers flask manually
    • Check Python version compatibility

Performance Notes

  • First optimization may be slower due to model loading
  • Subsequent requests are faster as model stays in memory
  • GPU acceleration significantly improves inference speed
  • Model size is approximately 240MB

Development

File Structure

java_optimizerΕ‘
β”œβ”€β”€ app.py                 # Main Flask application
β”œβ”€β”€ requirements.txt       # Python dependencies
β”œβ”€β”€ test_model.py         # Model testing script
└── templates/
    └── index.html        # Frontend interface

Making Changes

  1. Modify app.py for backend logic changes
  2. Update templates/index.html for UI changes
  3. Adjust model parameters in app.py if needed
  4. Restart the application after changes

License

This project is provided for educational and demonstration purposes.

Acknowledgements

  • Model based on Salesforce/codet5-small
  • Built with Flask and HuggingFace Transformers
  • Inspired by Java optimization best practices# DeepLearning