|
Download README.md from XXXiong/ChatHLS-HLSFixer: direct link, hf CLI and curl.
- Browser
- Download file 4.92 kB
-
https://huggingface.co/XXXiong/ChatHLS-HLSFixer/resolve/main/README.md
- Command line
-
hf download hf://XXXiong/ChatHLS-HLSFixer/README.md
-
curl -L -o README.md https://huggingface.co/XXXiong/ChatHLS-HLSFixer/resolve/main/README.md
4.92 kB
| license: apache-2.0 | |
| pipeline_tag: text-generation | |
| tags: | |
| - chat | |
| - llm | |
| - safetensors | |
| base_model: Qwen/Qwen2.5-14B-Instruct | |
| language: | |
| - en | |
| # ChatHLS-HLSFixer | |
| ## Model Details | |
| - **Finetuned from model:** `Qwen/Qwen2.5-14B-Instruct` | |
| - **Model source paper:** [ChatHLS: Towards Systematic Design Automation and Optimization for High-Level Synthesis](https://aclanthology.org/2026.acl-long.962/) | |
| - **Project repository:** [GEAR-SEU/ChatHLS-ACL-26](https://github.com/GEAR-SEU/ChatHLS-ACL-26) | |
| ## Description | |
| **ChatHLS-HLSFixer** is a specialized Large Language Model fine-tuned for High-Level Synthesis (HLS) C/C++ error correction. It acts as the core analysis agent within the ChatHLS framework. | |
| ## Quickstart | |
| ### Prerequisites | |
| ```bash | |
| pip install transformers torch accelerate | |
| ``` | |
| ### Example | |
| Here is a simple example of how to format your prompt and generate debugging instructions for buggy HLS code: | |
| ````python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| model_name = "XXXiong/ChatHLS-HLSFixer" | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_name, | |
| torch_dtype=torch.bfloat16, | |
| device_map="auto" | |
| ) | |
| buggy_code = """ | |
| #include "ap_fixed.h" | |
| void vector_mul(ap_fixed<32,16> a[8], ap_fixed<32,16> b[8], ap_fixed<32,16> c[8]) { | |
| #pragma HLS ARRAY_PARTITION variable=a complete dim=1 | |
| #pragma HLS ARRAY_PARTITION variable=b complete dim=1 | |
| #pragma HLS ARRAY_PARTITION variable=c complete dim=1 | |
| for (int i = 0; i < 8; ++i) { | |
| #pragma HLS UNROLL | |
| #pragma HLS PIPELINE II=1 | |
| c[i] = a[i] * b[i]; | |
| } | |
| } | |
| """ | |
| error_log = """ | |
| "ERROR: [HLS 214-274] In 'VITIS_LOOP_7_1', Pragma conflict happens on 'UNROLL' and 'PIPELINE' pragmas: Complete unroll will break the target of other loop pragmas (vector_mul.cpp:7:18)", | |
| "ERROR: [HLS 200-1715] Encountered problem during source synthesis" | |
| """ | |
| prompt = f"""You are given a piece of HLS code that contains bugs, the compiler error log, and the description of the buggy code. | |
| Your task is to debug the buggy code by analyzing the differences between it and the original code, using the error log to guide you. | |
| Generate the COT debugging strategy through the buggy code, the code's description and error log. | |
| **Instructions:** | |
| 1. **Debug the Code**: | |
| - **Identify Errors**: List the erroneous code line in the buggy code. | |
| - **Analyze Reasons**: Explain why each bug occurred, referencing the error log and the differences from the original code. | |
| - **Propose Fixes**: Specify the exact changes needed to fix each bug, including code modifications. | |
| 2. **Construct a Chain of Thought (CoT)**: | |
| - **Sequential Reasoning**: Address one error at a time, starting with syntax errors from the compiler. | |
| - **Hypothesis Formation**: Hypothesize why logical errors occur based on the error log and code comparison. | |
| - **Testing and Verification**: Validate hypotheses through analysis. | |
| - **Reflection**: Reflect on the findings after each step and plan the next steps. | |
| 3. **Output**: | |
| - **Chain of Thought (CoT)**: Write a detailed explanation of your debugging process. | |
| - **Bug Analysis in JSON Format**: Provide a structured summary as per the format below. | |
| - **No other explanations or conclusions** | |
| **Inputs:** | |
| Buggy Code: | |
| ```cpp | |
| {buggy_code} | |
| ``` | |
| Vitis HLS Compiler Error Log: | |
| ```text | |
| {error_log} | |
| ``` | |
| **Expected Output Format:** | |
| Bug Analysis: | |
| ```json | |
| {{ | |
| "bug_analysis": [ | |
| {{ | |
| "erroneous_code_line": "[code line]", | |
| "reason": "[Explanation of why the bug occurred]", | |
| "modification_actions": [ | |
| {{ | |
| "action": "[Specific modification to be made]", | |
| "reason": "[Reason for the modification]" | |
| }} | |
| ] | |
| }} | |
| ] | |
| }} | |
| ``` | |
| Please ensure that the JSON is properly formatted and valid. | |
| """ | |
| messages = [ | |
| {"role": "system", | |
| "content": """You are an expert in High-Level Synthesis (HLS) programming. | |
| Your primary task is to identify and debug HLS-incompatible errors in regular C/C++ programs. You will be provided with: | |
| - **Buggy Code**: A C/C++ program containing HLS-incompatible errors. | |
| - **Compiler Error Log**: The error messages generated by the Vitis HLS compiler."""}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| text = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=False, | |
| add_generation_prompt=True | |
| ) | |
| model_inputs = tokenizer([text], return_tensors="pt").to(model.device) | |
| generated_ids = model.generate( | |
| **model_inputs, | |
| max_new_tokens=2048, | |
| temperature=0.7 | |
| ) | |
| generated_ids = [ | |
| output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) | |
| ] | |
| response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] | |
| print(response) | |
| ```` |