rvk7895 commited on
Commit
138a454
1 Parent(s): 8335e43

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +185 -197
README.md CHANGED
@@ -1,205 +1,193 @@
1
- ---
2
- library_name: transformers
3
- tags: []
4
- widget:
5
- - text: >-
6
- Hi Im pip_bot , I can document code , write sql and do other etl related work. All you have to give me are a few examples.
7
- example_title: example
8
- ---
9
 
10
- # Model Card for Model ID
11
 
12
- <!-- Provide a quick summary of what the model is/does. -->
13
 
 
14
 
 
 
 
15
 
16
- ## Model Details
17
 
18
- ### Model Description
19
-
20
- <!-- Provide a longer summary of what this model is. -->
21
-
22
- This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
23
-
24
- - **Developed by:** [More Information Needed]
25
- - **Funded by [optional]:** [More Information Needed]
26
- - **Shared by [optional]:** [More Information Needed]
27
- - **Model type:** [More Information Needed]
28
- - **Language(s) (NLP):** [More Information Needed]
29
- - **License:** [More Information Needed]
30
- - **Finetuned from model [optional]:** [More Information Needed]
31
-
32
- ### Model Sources [optional]
33
-
34
- <!-- Provide the basic links for the model. -->
35
-
36
- - **Repository:** [More Information Needed]
37
- - **Paper [optional]:** [More Information Needed]
38
- - **Demo [optional]:** [More Information Needed]
39
-
40
- ## Uses
41
-
42
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
43
-
44
- ### Direct Use
45
-
46
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
47
-
48
- [More Information Needed]
49
-
50
- ### Downstream Use [optional]
51
-
52
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
53
-
54
- [More Information Needed]
55
-
56
- ### Out-of-Scope Use
57
-
58
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
59
-
60
- [More Information Needed]
61
-
62
- ## Bias, Risks, and Limitations
63
-
64
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
65
-
66
- [More Information Needed]
67
-
68
- ### Recommendations
69
-
70
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
71
-
72
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
73
-
74
- ## How to Get Started with the Model
75
-
76
- Use the code below to get started with the model.
77
-
78
- [More Information Needed]
79
-
80
- ## Training Details
81
-
82
- ### Training Data
83
-
84
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
85
-
86
- [More Information Needed]
87
-
88
- ### Training Procedure
89
-
90
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
91
-
92
- #### Preprocessing [optional]
93
-
94
- [More Information Needed]
95
-
96
-
97
- #### Training Hyperparameters
98
-
99
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
100
-
101
- #### Speeds, Sizes, Times [optional]
102
-
103
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
104
-
105
- [More Information Needed]
106
-
107
- ## Evaluation
108
-
109
- <!-- This section describes the evaluation protocols and provides the results. -->
110
-
111
- ### Testing Data, Factors & Metrics
112
-
113
- #### Testing Data
114
-
115
- <!-- This should link to a Dataset Card if possible. -->
116
-
117
- [More Information Needed]
118
-
119
- #### Factors
120
-
121
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
122
-
123
- [More Information Needed]
124
-
125
- #### Metrics
126
-
127
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
128
-
129
- [More Information Needed]
130
-
131
- ### Results
132
-
133
- [More Information Needed]
134
-
135
- #### Summary
136
-
137
-
138
-
139
- ## Model Examination [optional]
140
-
141
- <!-- Relevant interpretability work for the model goes here -->
142
-
143
- [More Information Needed]
144
-
145
- ## Environmental Impact
146
-
147
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
148
-
149
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
150
-
151
- - **Hardware Type:** [More Information Needed]
152
- - **Hours used:** [More Information Needed]
153
- - **Cloud Provider:** [More Information Needed]
154
- - **Compute Region:** [More Information Needed]
155
- - **Carbon Emitted:** [More Information Needed]
156
-
157
- ## Technical Specifications [optional]
158
-
159
- ### Model Architecture and Objective
160
-
161
- [More Information Needed]
162
-
163
- ### Compute Infrastructure
164
-
165
- [More Information Needed]
166
-
167
- #### Hardware
168
-
169
- [More Information Needed]
170
-
171
- #### Software
172
-
173
- [More Information Needed]
174
-
175
- ## Citation [optional]
176
-
177
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
178
-
179
- **BibTeX:**
180
-
181
- [More Information Needed]
182
-
183
- **APA:**
184
-
185
- [More Information Needed]
186
-
187
- ## Glossary [optional]
188
-
189
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
190
-
191
- [More Information Needed]
192
-
193
- ## More Information [optional]
194
-
195
- [More Information Needed]
196
-
197
- ## Model Card Authors [optional]
198
-
199
- [More Information Needed]
200
-
201
- ## Model Card Contact
202
-
203
- [More Information Needed]
204
 
 
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # pip-code-to-doc
 
 
 
 
 
 
 
2
 
3
+ [pipableAi](https://www.linkedin.com/company/pipable.ai/about/)
4
 
5
+ [colab_notebook](https://colab.research.google.com/drive/17PyMU_3QN9LROy7x-jmaema0cuLRzBvc?usp=sharing)
6
 
7
+ ## What have we built?
8
 
9
+ A 1.3 bn code documentation model that outperforms most models on documenting codes and making your in-house libs ready for LLM and RAG pipelines.
10
+ We have also open sourced a [parsing lib](https://github.com/PipableAI/pip-library-parser) for the same, together the lib and model can turn your codebase to functional parse tree ready to be consumed by LLMs to execute complex tasks.
11
+ This is a further trained version of pip-sql-1.3b.
12
 
13
+ ## How we built it?
14
 
15
+ We used softmax cross entropy and a modified form of policy grad along with Q loss, optimized in an EM set up.
16
+ Loss behaviour in the set up mentioned above -
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
+ ## License
19
 
20
+ The model is open source under apache 2.0. License
21
+
22
+ ## Usage
23
+
24
+
25
+ ### Library use
26
+ ```python
27
+ !pip3 install git+https://github.com/PipableAI/pip-library-parser
28
+ !pip3 install atlassian-python-api
29
+
30
+
31
+ from pip_library_parser import CodeToDocGenerator
32
+ from atlassian import Jira
33
+
34
+ import torch
35
+ torch.set_default_device("cuda")
36
+
37
+ # Instantiate the CodeToDocGenerator
38
+ generator = CodeToDocGenerator()
39
+
40
+ # Generate docstrings for the module's functions and methods
41
+ module = Jira
42
+ module_name = "atlassian.Jira"
43
+
44
+ docs = generator.generate_module_docs(module, module_name)
45
+ print(docs)
46
+ ```
47
+
48
+ ```python
49
+ from pip_library_parser import CodeToDocGenerator
50
+
51
+ # Instantiate the CodeToDocGenerator
52
+ generator = CodeToDocGenerator()
53
+
54
+ code_snippet = """
55
+ def example_function(x):
56
+ return x * 2
57
+ """
58
+
59
+ docstring = generator.generate_docstring_from_pip_model(code_snippet)
60
+ print("Generated Docstring:")
61
+ print(docstring)
62
+ ```
63
+
64
+ ### Installation
65
+
66
+ ```bash
67
+ pip install transformers
68
+ ```
69
+
70
+ ### Prompt
71
+ ```python
72
+ prompt = f"""<function_code>{code}</function_code>
73
+ <question>Give one line description of the python code above in natural language.</question>
74
+ <doc>"""
75
+ ```
76
+
77
+ ### PyTorch
78
+ ```python
79
+ from transformers import AutoModelForCausalLM, AutoTokenizer
80
+ device = "cuda"
81
+ model = AutoModelForCausalLM.from_pretrained("PipableAI/pip-code-to-doc-1.3b").to(device)
82
+ tokenizer = AutoTokenizer.from_pretrained("PipableAI/pip-code-to-doc-1.3b")
83
+ prompt = f"""
84
+ <function_code>
85
+ def example_function(x):
86
+ return x * 2
87
+ </function_code>
88
+ <question>Give one line description of the python code above in natural language.</question>
89
+ <doc>"""
90
+ inputs = tokenizer(prompt, return_tensors="pt")
91
+ outputs = model.generate(**inputs, max_new_tokens=300)
92
+ tokenizer.decode(outputs[0], skip_special_tokens=True).split('<doc>')[-1].split('</doc>')[0]
93
+ ```
94
+
95
+
96
+
97
+ ## Examples
98
+
99
+ ### prompt
100
+ ```python
101
+ <function_code>
102
+ ###########################
103
+ # Generate Analytical Model
104
+ ###########################
105
+ ##################################################
106
+ # func: get_np_array_transition_probability_matrix
107
+ ##################################################
108
+ def get_np_array_transition_probability_matrix(int_num_states, np_array_A_matrix):
109
+ print('np_array_A_matrix:')
110
+ print(np_array_A_matrix)
111
+ #####################################################
112
+ # Perturb the adjacency matrix to avoid singularities
113
+ #####################################################
114
+ np_array_A_matrix += (np.full((int_num_states, int_num_states), float_eps) - (np.identity(int_num_states) * float_eps))
115
+ print('np_array_A_matrix:')
116
+ print(np_array_A_matrix)
117
+ print('np_array_D_matrix:')
118
+ np_array_D_matrix = np.diag(np.sum(np_array_A_matrix, axis=1))
119
+ print(np_array_D_matrix)
120
+ print('np_array_D_matrix_inv:')
121
+ np_array_D_matrix_inv = np.linalg.inv(np_array_D_matrix)
122
+ print(np_array_D_matrix_inv)
123
+ print('\n\n')
124
+ print('np_array_P_matrix:')
125
+ np_array_P_matrix = np.dot(np_array_D_matrix_inv, np_array_A_matrix)
126
+ print(np_array_P_matrix)
127
+ print('np.sum(np_array_P_matrix, axis=1):')
128
+ print(np.sum(np_array_P_matrix, axis=1))
129
+ print('\n\n')
130
+ return np_array_P_matrix
131
+ ##################################################
132
+ # func: get_np_array_perron_frobenius_eigen_vector
133
+ ##################################################
134
+ def get_np_array_perron_frobenius_matrix(int_num_states, np_array_P_matrix):
135
+ np_array_perron_frobenius_matrix = np.linalg.matrix_power(np_array_P_matrix,1000)
136
+ np_array_perron_frobenius_vector = np_array_perron_frobenius_matrix[0,:]
137
+ print('np_array_perron_frobenius_matrix:')
138
+ print(np_array_perron_frobenius_matrix)
139
+ print('np.sum(np_array_perron_frobenius_matrix, axis=1):')
140
+ print(np.sum(np_array_perron_frobenius_matrix, axis=1))
141
+ print('np.sum(np_array_perron_frobenius_matrix, axis=0):')
142
+ print(np.sum(np_array_perron_frobenius_matrix, axis=0))
143
+ print('np.sum(np_array_perron_frobenius_matrix, axis=0)/int_num_states:')
144
+ print(np.sum(np_array_perron_frobenius_matrix, axis=0)/int_num_states)
145
+ print('np.dot(np_array_perron_frobenius_vector, np_array_P_matrix):')
146
+ print(np.dot(np_array_perron_frobenius_vector, np_array_P_matrix))
147
+ print('np_array_perron_frobenius_vector:')
148
+ print(np_array_perron_frobenius_vector)
149
+ print('\n\n')
150
+ return np_array_perron_frobenius_vector, np_array_perron_frobenius_matrix
151
+ #############################
152
+ # func: get_np_array_Z_matrix
153
+ #############################
154
+ def get_np_array_Z_matrix(int_num_states, np_array_P_matrix, np_array_perron_frobenius_matrix):
155
+ np_array_Z_matrix = np.linalg.inv(np.identity(int_num_states) - np_array_P_matrix + np_array_perron_frobenius_matrix)
156
+ print('np_array_Z_matrix:')
157
+ print(np_array_Z_matrix)
158
+ print('\n\n')
159
+ return(np_array_Z_matrix)
160
+ #############################
161
+ # func: get_np_array_H_matrix
162
+ #############################
163
+ def get_np_array_H_matrix(int_num_states, np_array_Z_matrix, np_array_perron_frobenius_vector):
164
+ np_array_H_matrix = np.zeros([int_num_states, int_num_states])
165
+ for i in range(int_num_states):
166
+ for j in range(int_num_states):
167
+ np_array_H_matrix[i][j] = (np_array_Z_matrix[j][j] - np_array_Z_matrix[i][j])/np_array_perron_frobenius_vector[j]
168
+ print('np_array_H_matrix:')
169
+ print(np_array_H_matrix)
170
+ print('\n\n')
171
+ return np_array_H_matrix
172
+ ###########
173
+ # func: run
174
+ ###########
175
+ def run(np_array_A_matrix):
176
+ int_num_states = len(np_array_A_matrix)
177
+ np_array_P_matrix = get_np_array_transition_probability_matrix(int_num_states, np_array_A_matrix)
178
+ np_array_perron_frobenius_vector, np_array_perron_frobenius_matrix = get_np_array_perron_frobenius_matrix(int_num_states, np_array_P_matrix)
179
+ np_array_Z_matrix = get_np_array_Z_matrix(int_num_states, np_array_P_matrix, np_array_perron_frobenius_matrix)
180
+ np_array_H_matrix = get_np_array_H_matrix(int_num_states, np_array_Z_matrix, np_array_perron_frobenius_vector)
181
+ return(np_array_H_matrix)
182
+ </function_code>
183
+ <question>Give one line description of the python code above in natural language.</question>
184
+ <doc>
185
+ ```
186
+
187
+ ### Response
188
+ ```txt
189
+ The given python code is a function that calculates the transition probability matrix, P, for a given adjacency matrix A, and then uses these matrices to calculate the Perron-Frobenius eigenvector and its inverse matrix Z, and finally, the H matrix which is the inverse of the Z matrix. The H matrix is then returned as the output of the function. The adjacency matrix A is a square matrix where each element at position (i, j) represents the probability of transitioning from state i to state j. The function first perturbs the adjacency matrix to avoid singularities, then calculates the transition probability matrix P, the Perron-Frobenius eigenvector and its inverse matrix Z, and finally, the H matrix. The H matrix is then returned as the output of the function.
190
+ ```
191
+
192
+ ### Team
193
+ Avi Kothari, Gyan Ranjan, Pratham Gupta, Ritvik Aryan Kalra, Soham Acharya