Text Generation
Transformers
Safetensors
phi3
lora
merged
fluid-structure-interaction
physics
phi-4
conversational
custom_code
text-generation-inference
Instructions to use AngadKumar/fsi-slm-phi4-mini with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use AngadKumar/fsi-slm-phi4-mini with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="AngadKumar/fsi-slm-phi4-mini", trust_remote_code=True) messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("AngadKumar/fsi-slm-phi4-mini", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("AngadKumar/fsi-slm-phi4-mini", trust_remote_code=True) 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]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use AngadKumar/fsi-slm-phi4-mini with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "AngadKumar/fsi-slm-phi4-mini" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "AngadKumar/fsi-slm-phi4-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/AngadKumar/fsi-slm-phi4-mini
- SGLang
How to use AngadKumar/fsi-slm-phi4-mini 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 "AngadKumar/fsi-slm-phi4-mini" \ --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": "AngadKumar/fsi-slm-phi4-mini", "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 "AngadKumar/fsi-slm-phi4-mini" \ --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": "AngadKumar/fsi-slm-phi4-mini", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use AngadKumar/fsi-slm-phi4-mini with Docker Model Runner:
docker model run hf.co/AngadKumar/fsi-slm-phi4-mini
| license: mit | |
| base_model: microsoft/Phi-4-mini-instruct | |
| library_name: transformers | |
| tags: | |
| - lora | |
| - merged | |
| - fluid-structure-interaction | |
| - physics | |
| - phi-4 | |
| pipeline_tag: text-generation | |
| extra_gated_prompt: >- | |
| Access to this model is restricted. Please describe your intended use case. | |
| Requests are reviewed manually. | |
| extra_gated_fields: | |
| Affiliation: text | |
| Intended use: text | |
| # FSI-SLM — Phi-4-mini fine-tuned for Fluid-Structure Interaction Interpretation | |
| **microsoft/Phi-4-mini-instruct** (3.8B) with LoRA fine-tuning merged into the | |
| base weights, for interpreting fluid-structure interaction (FSI) experiments: | |
| flow-regime classification (attached / separated / VIV lock-in / galloping / | |
| stall flutter), vortex-shedding frequency and Strouhal number reporting, | |
| lock-in detection, amplitude trend, and mode-shape description. | |
| Standard `transformers` format — runs on **CUDA, CPU, or Apple Silicon (MPS)**. | |
| The original MLX LoRA adapters are included under `adapters/` for MLX users. | |
| Code: https://github.com/AngadKumar16/FSI-SLM | |
| ## Usage (any platform) | |
| ```python | |
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| repo = "AngadKumar/fsi-slm-phi4-mini" | |
| tok = AutoTokenizer.from_pretrained(repo) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| repo, dtype=torch.bfloat16, device_map="auto" | |
| ) | |
| SYSTEM_PROMPT = ( | |
| "You are an expert in fluid-structure interaction (FSI) and aeroelasticity. " | |
| "You are given a serialized feature record from a single airfoil/hydrofoil/" | |
| "membrane experiment. The feature record is the ONLY source of truth for this " | |
| "experiment's measured numbers. Interpret it and respond with a structured " | |
| "description that states, in this order: (1) the flow regime (attached, " | |
| "separated, VIV lock-in, galloping, or stall flutter); (2) the dominant " | |
| "frequency in Hz and the Strouhal number St; (3) the lock-in status (compare " | |
| "shedding frequency to the structural natural frequency); (4) the amplitude " | |
| "trend; (5) the mode shape; and (6) a one-line mechanism note. If reference " | |
| "passages from the literature are provided, you may use them for domain " | |
| "grounding only -- never let them override the experiment's own measured values." | |
| ) | |
| feature_record = """FSI_FEATURE_RECORD v1 | |
| experiment_id: my-experiment-001 | |
| [conditions] | |
| reynolds_number: 9.775e+04 | |
| angle_of_attack_deg: 5.171 | |
| freestream_velocity_m_s: 0.3166 | |
| reduced_velocity_Ustar: 2.050 | |
| chord_m: 0.3088 | |
| [piv_derived] | |
| shedding_frequency_hz: 0.5 | |
| strouhal_number_St: 0.4877 | |
| wake_width_over_c: 1.262 | |
| separation_location_x_over_c: 0.533 | |
| pod_mode_amplitudes: [0.115, 0.053, 0.035, 0.034] | |
| turbulent_kinetic_energy: 0.1147 | |
| [structure] | |
| rms_amplitude_over_c: 0.4909 | |
| dominant_frequency_hz: 0.5 | |
| natural_frequency_hz: 0.5 | |
| mode_number: 1 | |
| camber: 0.0275 | |
| [forces] | |
| cl_mean: 0.5096 | |
| cl_rms: 0.5289 | |
| cl_dominant_frequency_hz: 0.5 | |
| """ | |
| messages = [ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": feature_record}, | |
| ] | |
| ids = tok.apply_chat_template( | |
| messages, add_generation_prompt=True, return_tensors="pt" | |
| ).to(model.device) | |
| out = model.generate(ids, max_new_tokens=350, do_sample=False) | |
| print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)) | |
| # -> "Regime: galloping (confidence: 0.97). The wake sheds at a dominant | |
| # frequency of 0.50 Hz, giving a Strouhal number St = 0.488. ..." | |
| ``` | |
| The full `FeatureRecord` schema (all fields, valid ranges, units) and the | |
| feature-extraction pipeline (FFT, POD from raw PIV data) are in the GitHub | |
| repo, along with a Gradio UI, RAG grounding over an FSI paper corpus, and an | |
| evaluation harness. | |
| ## Usage (MLX, Apple Silicon) | |
| ```python | |
| from mlx_lm import load, generate | |
| # merged model | |
| model, tokenizer = load("AngadKumar/fsi-slm-phi4-mini") | |
| # or base + this repo's adapters/ | |
| model, tokenizer = load("microsoft/Phi-4-mini-instruct", adapter_path="adapters") | |
| ``` | |
| ## Training | |
| - Method: LoRA (rank 8, alpha 16, dropout 0.05), all linear layers | |
| - Data: 200 physically-consistent synthetic FSI experiments (160 train / 20 val / 20 test), seeded | |
| - Framework: mlx-lm on Apple M4 Pro | |
| - Eval: regime macro-F1, lock-in F1, per-field numeric accuracy (see below) | |
| ## Evaluation | |
| | Metric | Value | | |
| |---|---| | |
| | num_examples | 20 | | |
| | num_parsed | 20 | | |
| | regime_macro_f1 | 0.9048 | | |
| | lock_in_f1 | 0.7778 | | |
| | regime_f1_threshold_met | True | | |
| | avg_field_accuracy | 0.9375 | | |
| | field accuracy: shedding_frequency_hz | 1.0000 | | |
| | field accuracy: strouhal_number | 1.0000 | | |
| | field accuracy: rms_amplitude_over_c | 0.7500 | | |
| | field accuracy: mode_number | 1.0000 | | |
| | predictor | trained-model+adapter(no-rag) | | |
| ## Limitations | |
| - Trained on synthetic data generated from canonical FSI physics (Strouhal | |
| scaling, lock-in bands, galloping/stall-flutter onset); real PIV data may | |
| distribution-shift. | |
| - The structured adapter answers only the fixed interpretation format; | |
| free-text Q&A uses the base instruct model. | |
| ## Citation | |
| ```bibtex | |
| @software{fsi_slm, | |
| author = {Angad Kumar}, | |
| title = {FSI-SLM: Fluid-Structure Interaction Interpretation via Small Language Models}, | |
| year = {2026}, | |
| url = {https://github.com/AngadKumar16/FSI-SLM} | |
| } | |
| ``` | |