--- library_name: transformers license: apache-2.0 --- # Model Card for mAInframer-1 LLM for the COBOL programming language. ## Model Details ### Model Description mAInframer is a series of models with different parameter counts: 7b, 13b, 34b. These models are pretrained on code (CodeLlama base models) and fine-tuned on COBOL code. ## Uses This model can be used for code completion and fill-in-the middle (COBOL). ## How to Get Started with the Model Model loading: ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("bloopai/mAInframer-7b", device_map="cuda", torch_dtype=torch.bfloat16) tokenizer = AutoTokenizer.from_pretrained("codellama/CodeLlama-7b-hf") ``` ### Completion: ```python prompt = ''' IDENTIFICATION DIVISION. PROGRAM-ID. SUM-OF-CUBES. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 STEP PIC S9(10). 01 CUBE PIC 9(7). 01 CUBE-SUM PIC 9(7) VALUE 0. LINKAGE SECTION. 01 LINKED-ITEMS. 05 L-MAX-STEP PIC S9(10). 05 RESULT PIC S9(10). * * Given an integer number, return the sum of the of all the integers below it. * * Example: * * sum_of_cubes(3) == 1**3 + 2**3 == 9 * sum_of_cubes(5) == 100 * * Store the result in the RESULT variable and mark the end of your program with END PROGRAM ''' inputs = tokenizer.encode(prompt, return_tensors="pt", add_special_tokens=False).to("cuda") outputs = model.generate(inputs, max_new_tokens=250, use_cache=True, do_sample=False, repetition_penalty=1.1) print(self.tokenizer.decode(outputs[0])) ``` Result: ```cobol IDENTIFICATION DIVISION. PROGRAM-ID. SUM-OF-CUBES. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 STEP PIC S9(10). 01 CUBE PIC 9(7). 01 CUBE-SUM PIC 9(7) VALUE 0. LINKAGE SECTION. 01 LINKED-ITEMS. 05 L-MAX-STEP PIC S9(10). 05 RESULT PIC S9(10). * * Given an integer number, return the sum of the of all the integers below it. * * Example: * * sum_of_cubes(3) == 1**3 + 2**3 == 9 * sum_of_cubes(5) == 100 * * Store the result in the RESULT variable and mark the end of your program with END PROGRAM PROCEDURE DIVISION USING LINKED-ITEMS. MOVE L-MAX-STEP TO STEP. PERFORM VARYING STEP FROM 1 BY 1 UNTIL STEP > L-MAX-STEP COMPUTE CUBE = STEP ** 3 ADD CUBE TO CUBE-SUM END-PERFORM. DISPLAY CUBE-SUM. MOVE CUBE-SUM TO RESULT. GOBACK. END PROGRAM SUM-OF-CUBES. ``` ### Infilling Follow the format: `
prefixsuffix ` To complete `PROCEDURE DIVISION` and infill `WORKING STORAGE SECTION.` to solve [COBOLEval](https://github.com/BloopAI/COBOLEval) problems: ```python prompt = ''' IDENTIFICATION DIVISION. PROGRAM-ID. SUM-OF-CUBES. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. DATA DIVISION.LINKAGE SECTION. 01 LINKED-ITEMS. 05 L-MAX-STEP PIC S9(10). 05 RESULT PIC S9(10). * * Given an integer number, return the sum of the of all the integers below it. * * Example: * * sum_of_cubes(3) == 1**3 + 2**3 == 9 * sum_of_cubes(5) == 100 * * Store the result in the RESULT variable and mark the end of your program with END PROGRAM''' ``` Result: ```cobol IDENTIFICATION DIVISION. PROGRAM-ID. MAX-ELEMENT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. DATA DIVISION.LINKAGE SECTION. 01 LINKED-ITEMS. 05 L-L OCCURS 100 TIMES INDEXED BY NI PIC S9(10). 05 RESULT PIC S9(10). * Return maximum element in the list. * >>> max_element([1, 2, 3]) * 3 * >>> max_element([5, 3, -5, 2, -3, 3, 9, 0, 123, 1, -10]) * 123 * * Store the result in the RESULT variable and mark the end of your program with END PROGRAM PROCEDURE DIVISION USING LINKED-ITEMS. MOVE ZERO TO WS-MAX-VALUE. PERFORM VARYING NI FROM 1 BY 1 UNTIL NI > 100 IF L-L (NI) > WS-MAX-VALUE THEN MOVE L-L (NI) TO WS-MAX-VALUE END-IF END-PERFORM. DISPLAY 'THE MAXIMUM ELEMENT IS: ' WS-MAX-VALUE. MOVE WS-MAX-VALUE TO RESULT. GOBACK. END PROGRAM MAX-ELEMENT. WORKING-STORAGE SECTION. 01 WS-MAX-VALUE PIC S9(10) VALUE ZERO. ``` ## Training Details Base model: CodeLlama Finetuning type: LoRA ### Metrics [COBOLEval](https://github.com/BloopAI/COBOLEval) is an adaptation of HumanEval where the problems are translated to COBOL. | **Model** | CobolEval (pass@1) | |----------------------|--------------------| | **mAInframer-7b** | 6.16 | | **mAInframer-13b** | 8.90 | | **mAInframer-34b** | 10.27 | ## Citation [Blog post]() ## Model Card Contact [More Information Needed]