Text Generation
Transformers
Safetensors
Chinese
English
qwen2
sql
text2sql
database
gaussdb
lora
fine-tuned
conversational
Eval Results (legacy)
text-generation-inference
Instructions to use lanfers/gaussdb-sql-expert-7b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use lanfers/gaussdb-sql-expert-7b with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="lanfers/gaussdb-sql-expert-7b") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("lanfers/gaussdb-sql-expert-7b") model = AutoModelForCausalLM.from_pretrained("lanfers/gaussdb-sql-expert-7b") messages = [ {"role": "user", "content": "Who are you?"}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Inference
- Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use lanfers/gaussdb-sql-expert-7b with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "lanfers/gaussdb-sql-expert-7b" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "lanfers/gaussdb-sql-expert-7b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/lanfers/gaussdb-sql-expert-7b
- SGLang
How to use lanfers/gaussdb-sql-expert-7b with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "lanfers/gaussdb-sql-expert-7b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "lanfers/gaussdb-sql-expert-7b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "lanfers/gaussdb-sql-expert-7b" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "lanfers/gaussdb-sql-expert-7b", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use lanfers/gaussdb-sql-expert-7b with Docker Model Runner:
docker model run hf.co/lanfers/gaussdb-sql-expert-7b
| license: apache-2.0 | |
| language: | |
| - zh | |
| - en | |
| base_model: Qwen/Qwen2.5-Coder-7B-Instruct | |
| tags: | |
| - sql | |
| - text2sql | |
| - database | |
| - gaussdb | |
| - lora | |
| - fine-tuned | |
| pipeline_tag: text-generation | |
| library_name: transformers | |
| datasets: | |
| - custom | |
| model-index: | |
| - name: GaussDB-SQL-Expert-7B | |
| results: | |
| - task: | |
| type: text-generation | |
| name: Database SQL Expert | |
| metrics: | |
| - name: Text2SQL Accuracy | |
| type: accuracy | |
| value: 100 | |
| - name: SQL Migration Accuracy | |
| type: accuracy | |
| value: 100 | |
| - name: Error Diagnosis Accuracy | |
| type: accuracy | |
| value: 100 | |
| - name: SQL Tuning Accuracy | |
| type: accuracy | |
| value: 90 | |
| - name: Boundary Safety Accuracy | |
| type: accuracy | |
| value: 80 | |
| - name: Overall Accuracy | |
| type: accuracy | |
| value: 94 | |
| # GaussDB SQL Expert 7B | |
| **[中文版 README](README_zh.md)** | |
| A domain-specific database assistant fine-tuned on Qwen2.5-Coder-7B-Instruct, specialized in SQL generation, optimization, cross-database migration, error diagnosis, and more. | |
| ## Model Overview | |
| | Item | Details | | |
| |------|---------| | |
| | Base Model | [Qwen/Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) | | |
| | Parameters | 7.6B (Dense) | | |
| | Fine-tuning | LoRA (rank=64, alpha=128, target=all linear layers) | | |
| | Trainable Params | 161M (2.08% of total) | | |
| | Training Data | 29,863 ShareGPT conversations + 1,571 validation | | |
| | Hardware | 1x NVIDIA H100 80GB | | |
| | Training Time | 3.5 hours | | |
| | Framework | [LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory) v0.9.4 | | |
| | Precision | BF16 | | |
| ## Core Capabilities | |
| - **Text2SQL**: Natural language to SQL with support for window functions, recursive CTEs, MERGE, subqueries, and more | |
| - **SQL Tuning**: Index invalidation analysis, execution plan interpretation, parameter optimization advice | |
| - **SQL Migration**: Oracle / MySQL / SQL Server → GaussDB syntax conversion (50+ difference points) | |
| - **Error Diagnosis**: Deadlock, WAL bloat, connection exhaustion, OOM, and 20+ common production issues | |
| - **SQL Explanation**: Logic breakdown and readability analysis of complex queries | |
| - **Boundary Safety**: Dangerous operation interception, clarification requests, out-of-scope rejection | |
| **Supports 9 major databases**: GaussDB, Oracle, MySQL, PostgreSQL, SQL Server, PolarDB, DM (Dameng), KingBase, Sybase | |
| ## Benchmark Results | |
| Evaluated on 100 automated test cases (20 per category) using keyword matching: | |
| | Category | Score | Notes | | |
| |----------|-------|-------| | |
| | Text2SQL | 20/20 (100%) | Window functions, CTE, MERGE, pagination all correct | | |
| | SQL Tuning | 18/20 (90%) | Index invalidation, implicit conversion, parameter tuning | | |
| | SQL Migration | 20/20 (100%) | Oracle/MySQL/SQL Server → GaussDB conversion | | |
| | Error Diagnosis | 20/20 (100%) | Deadlock, WAL, OOM, connection exhaustion | | |
| | Boundary Safety | 16/20 (80%) | Dangerous operation alerts, out-of-scope rejection | | |
| | **Overall** | **94/100 (94%)** | | | |
| ## Quick Start | |
| ### Requirements | |
| - Python >= 3.9 | |
| - PyTorch >= 2.0 | |
| - GPU with >= 16GB VRAM (recommended) or CPU (slower) | |
| - ~15GB disk space for model weights | |
| ### Installation | |
| ```bash | |
| # 1. Install dependencies | |
| pip install torch transformers accelerate | |
| # 2. (Optional) Install Flash Attention 2 for faster inference on NVIDIA GPUs | |
| pip install flash-attn --no-build-isolation | |
| ``` | |
| ### Download Model | |
| The model will be downloaded automatically on first use via `from_pretrained()`. You can also download it manually: | |
| ```bash | |
| # Option A: Using huggingface-cli | |
| pip install huggingface_hub | |
| huggingface-cli download lanfers/gaussdb-sql-expert-7b --local-dir ./gaussdb-sql-expert-7b | |
| # Option B: Using git-lfs | |
| git lfs install | |
| git clone https://huggingface.co/lanfers/gaussdb-sql-expert-7b | |
| # Option C: Using Python | |
| python -c " | |
| from huggingface_hub import snapshot_download | |
| snapshot_download('lanfers/gaussdb-sql-expert-7b', local_dir='./gaussdb-sql-expert-7b') | |
| " | |
| ``` | |
| > **China Mainland Users**: If download is slow, use a mirror: | |
| > ```bash | |
| > HF_ENDPOINT=https://hf-mirror.com huggingface-cli download lanfers/gaussdb-sql-expert-7b --local-dir ./gaussdb-sql-expert-7b | |
| > ``` | |
| ### Inference | |
| ```python | |
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| model_path = "lanfers/gaussdb-sql-expert-7b" | |
| device = "cuda" # or "mps" (Mac) / "cpu" | |
| tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_path, | |
| torch_dtype=torch.float16, | |
| device_map=device, | |
| trust_remote_code=True, | |
| ) | |
| model.eval() | |
| messages = [ | |
| {"role": "system", "content": "You are a professional database expert assistant, proficient in Oracle, MySQL, PostgreSQL, GaussDB, PolarDB, DM, KingBase, Sybase, SQL Server."}, | |
| {"role": "user", "content": "Database: GaussDB 505\n\nFind the top 3 highest-paid employees in each department, showing department name, employee name, salary, and rank."}, | |
| ] | |
| text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) | |
| inputs = tokenizer(text, return_tensors="pt").to(device) | |
| with torch.no_grad(): | |
| outputs = model.generate( | |
| **inputs, | |
| max_new_tokens=1024, | |
| temperature=0.7, | |
| do_sample=True, | |
| top_p=0.8, | |
| repetition_penalty=1.05, | |
| ) | |
| response = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) | |
| print(response) | |
| ``` | |
| ### Example Outputs | |
| **Input**: Find the top 3 highest-paid employees in each department | |
| **Output**: | |
| ```sql | |
| SELECT dept_name, emp_name, salary, rk | |
| FROM ( | |
| SELECT d.dept_name, e.emp_name, e.salary, | |
| DENSE_RANK() OVER(PARTITION BY e.dept_id ORDER BY e.salary DESC) AS rk | |
| FROM employees e | |
| JOIN departments d ON e.dept_id = d.dept_id | |
| ) t | |
| WHERE rk <= 3; | |
| ``` | |
| **Input**: Migrate Oracle to GaussDB: `SELECT NVL(name, 'unknown') FROM users WHERE ROWNUM <= 10` | |
| **Output**: | |
| ```sql | |
| SELECT COALESCE(name, 'unknown') FROM users LIMIT 10; | |
| -- NVL → COALESCE, ROWNUM → LIMIT | |
| ``` | |
| ## Training Details | |
| ### Hyperparameters | |
| ```yaml | |
| # LoRA config | |
| lora_rank: 64 | |
| lora_alpha: 128 | |
| lora_dropout: 0.05 | |
| lora_target: all # q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj | |
| # Training config | |
| learning_rate: 2.0e-5 | |
| lr_scheduler_type: cosine | |
| warmup_ratio: 0.1 | |
| num_train_epochs: 3 | |
| per_device_train_batch_size: 8 | |
| gradient_accumulation_steps: 4 # effective batch_size = 32 | |
| cutoff_len: 2048 | |
| optim: adamw_torch | |
| bf16: true | |
| gradient_checkpointing: true | |
| ``` | |
| ### Training Loss | |
| ``` | |
| Total steps: 2,799 | Duration: 3h 29m | |
| Step Epoch Train Loss Eval Loss | |
| 200 0.21 1.217 1.216 | |
| 600 0.64 1.038 1.104 | |
| 1000 1.07 1.035 1.076 | |
| 1400 1.50 1.062 1.058 | |
| 1800 1.93 1.062 1.045 | |
| 2200 2.36 0.966 1.044 | |
| 2600 2.79 0.959 1.042 ← best checkpoint | |
| ``` | |
| Final train_loss=1.039, eval_loss=1.042. Near-identical values indicate no overfitting. | |
| ### Training Data Distribution | |
| | Category | Proportion | Description | | |
| |----------|-----------|-------------| | |
| | Text2SQL | ~30% | Natural language → SQL generation | | |
| | SQL Tuning | ~20% | Slow query analysis, index optimization | | |
| | SQL Migration | ~15% | Cross-database syntax conversion | | |
| | Error Diagnosis | ~15% | Production incident troubleshooting | | |
| | Operations | ~10% | Parameter tuning, backup & recovery | | |
| | Boundary Safety | ~10% | Dangerous operation alerts, scope rejection | | |
| ## Limitations | |
| - Boundary safety has room for improvement: may execute `DELETE` without `WHERE` or `DROP DATABASE` without warning | |
| - Limited coverage of GaussDB 505 advanced features (e.g., column-store tables, distributed features) | |
| - Text-only input; does not support images (e.g., execution plan screenshots) | |
| - Recommended to add inference-side safety rules for production environments | |
| ## Citation | |
| If this model is helpful, please cite: | |
| ```bibtex | |
| @misc{gaussdb-sql-expert-7b, | |
| title={GaussDB SQL Expert 7B}, | |
| author={lanfers}, | |
| year={2026}, | |
| publisher={HuggingFace}, | |
| url={https://huggingface.co/lanfers/gaussdb-sql-expert-7b} | |
| } | |
| ``` | |
| ## License | |
| Fine-tuned from [Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) under the Apache 2.0 License. | |