|
--- |
|
library_name: transformers |
|
tags: [] |
|
--- |
|
|
|
# Model Card for LargeCodeModelGPTBigCode |
|
|
|
## Model Overview |
|
|
|
```LargeCodeModelGPTBigCode``` is a model designed for code test generation and analysis. It is based on [GPTBigCode](https://huggingface.co/docs/transformers/main/en/model_doc/gpt_bigcode) and is specifically tailored for handling and generating tests for code. The model has been trained on a small manually labeled dataset of code and can be used for various tasks related to code analysis and testing. |
|
|
|
<!-- Provide a quick summary of what the model is/does. --> |
|
|
|
### Features: |
|
* Code test generation. |
|
* Python code analysis and generation. |
|
* Uses a pre-trained GPT2 model integrated with Hugging Face. |
|
|
|
## How it Works |
|
|
|
The model is loaded from an external repository, such as Hugging Face, and is initialized using the ```class LargeCodeModelGPTBigCode```. Several parameters can be specified during initialization to configure the model, such as: |
|
|
|
* gpt2_name: The link to the model on Hugging Face |
|
* prompt_string: An additional wrapper for better understanding of the task by the model |
|
* params_inference: Inference parameters (used in self.gpt2.generate(**inputs, **inference_params)) |
|
* max_length: The maximum number of tokens in the sequence |
|
* device: The device to run the model on |
|
* saved_model_path: Path to the fine-tuned model |
|
* num_lines: Number of lines (due to "non-terminating" model generation) |
|
* flag_hugging_face: Flag to enable usage with Hugging Face (default: False) |
|
* flag_pretrained: Flag to initialize the model with pre-trained weights |
|
|
|
You should download [inference_gptbigcode.py](inference_gptbigcode.py) for proper model usage or use ```git clone https://huggingface.co/4ervonec19/SimpleTestGenerator``` instead. Also you may use this file for inference parameters tuning. |
|
|
|
### Model Initialization |
|
|
|
```python |
|
from inference_gptbigcode import LargeCodeModelGPTBigCode |
|
|
|
gpt2bigcode = "4ervonec19/SimpleTestGenerator" |
|
|
|
CodeModel = LargeCodeModelGPTBigCode(gpt2_name=gpt2bigcode, |
|
flag_pretrained=True, |
|
flag_hugging_face=True) |
|
|
|
``` |
|
|
|
### Inference Example |
|
|
|
Here’s an example of inference where the model is used to generate tests based on a given code snippet: |
|
|
|
```python |
|
code_example = '''def equals_zero(a): |
|
if a == 0: |
|
return True |
|
return False''' |
|
|
|
tests_generated = CodeModel.input_inference(code_text=code_example) |
|
|
|
# Result |
|
print(tests_generated['generated_output']) |
|
``` |
|
|
|
### Output: |
|
The result will contain the input function and generated tests dict, for example: |
|
|
|
```python |
|
{'input_function': ('def equals_zero(a):\n if a == 0:\n return True\n return False',), |
|
'generated_output': 'def test_equals_zero():\n assert equals_zero(0) is True\n assert equals_zero(1) is False\n assert equals_zero(0) is True\n assert equals_zero(1.5) is False'} |
|
``` |
|
|
|
## Model Details |
|
|
|
* Architecture: GPT2 |
|
* Pretraining: Yes, the model uses a pre-trained GPT2 version for test generation and code generation. |
|
* Framework: PyTorch/HuggingFace |
|
* License: MIT (or another, depending on the model's license) |
|
|
|
## Limitations |
|
|
|
* The model may not always generate correct or optimal tests, especially for complex or non-standard code fragments. |
|
* Some understanding of code structure may be required for optimal results. |
|
* The quality of generated tests depends on the quality of the input code and its context. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|