| --- |
| license: mit |
|
|
| language: |
| - en |
| pipeline_tag: text-generation |
| tags: |
| - nlp |
| - code |
| inference: |
| parameters: |
| temperature: 0.0 |
| widget: |
| - messages: |
| - role: user |
| content: How to express n-th root of the determinant of a semidefinite matrix in cvx? |
| --- |
| # cvx-coder |
| [Github](https://github.com/jackfsuia/cvx-coder) | [Modelscope](https://www.modelscope.cn/models/tommy1235/cvx-coder) |
|
|
| ## Introduction |
|
|
| cvx-coder aims to improve the [Matlab CVX](https://cvxr.com/cvx) code ability and QA ability of LLMs. It is a [phi-3 model](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct) finetuned on a dataset consisting of CVX docs, codes, [forum conversations](https://ask.cvxr.com/) ( my cleaned version of them is at [CVX-forum-conversations](https://huggingface.co/datasets/tim1900/CVX-forum-conversations)). |
|
|
| ## Quickstart |
| For one quick test, run the following: |
| ```python |
| from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline |
| m_path="tim1900/cvx-coder" |
| model = AutoModelForCausalLM.from_pretrained( |
| m_path, |
| device_map="auto", |
| torch_dtype="auto", |
| trust_remote_code=True, |
| ) |
| tokenizer = AutoTokenizer.from_pretrained(m_path) |
| pipe = pipeline( |
| "text-generation", |
| model=model, |
| tokenizer=tokenizer, |
| ) |
| generation_args = { |
| "max_new_tokens": 2000, |
| "return_full_text": False, |
| "temperature": 0, |
| "do_sample": False, |
| } |
| content='''my problem is not convex, can i use cvx? if not, what should i do, be specific.''' |
| messages = [ |
| {"role": "user", "content": content}, |
| ] |
| output = pipe(messages, **generation_args) |
| print(output[0]['generated_text']) |
| ``` |
| For the **chat mode** in web, run the following: |
| ```python |
| import gradio as gr |
| from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline |
| m_path="tim1900/cvx-coder" |
| model = AutoModelForCausalLM.from_pretrained( |
| m_path, |
| device_map="auto", |
| torch_dtype="auto", |
| trust_remote_code=True, |
| ) |
| tokenizer = AutoTokenizer.from_pretrained(m_path) |
| pipe = pipeline( |
| "text-generation", |
| model=model, |
| tokenizer=tokenizer, |
| ) |
| generation_args = { |
| "max_new_tokens": 2000, |
| "return_full_text": False, |
| "temperature": 0, |
| "do_sample": False, |
| } |
| |
| def assistant_talk(message, history): |
| message=[ |
| {"role": "user", "content": message}, |
| ] |
| temp=[] |
| for i in history: |
| temp+=[{"role": "user", "content": i[0]},{"role": "assistant", "content": i[1]}] |
| |
| messages =temp + message |
| |
| output = pipe(messages, **generation_args) |
| return output[0]['generated_text'] |
| gr.ChatInterface(assistant_talk).launch() |
| ``` |