This is the LoRA Ping (to be released soon!) uses for identifying devices on a user's network. In order to get around Nmap not correctly identifying/fingerprinting devices
this LoRA is employed to work with a non-technical user to identify devices.
The model will receive scan data from Nmap, and ask clarifying questions (if necessary), and finally
output what device the model believes the user has in their home. A full list of possible devices the model was trained on can be found here (coming soon!).
This effectively allows for network mapping in the home enviornment without the user manually parsing Nmap
results themselves! This LoRA was the best of the prototype run, and trained natively in MLX for 600 iters on the
device-identification
dataset (coming soon!).
Quickstart
First install MLX.
pip install mlx-lm
Then run the following to interact with the model
from mlx_lm import load, generate
system_prompt = """[SEE SYSTEM PROMPT BELOW]"""
model, tokenizer = load(
"Qwen/Qwen3-1.7B",
adapter_path="dzur658/ping-device-id-LoRA-001-MLX"# Replace with your actual HF username/repo
)
prompt = """[SEE INPUTS SECTION]"""
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": prompt}
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
response = generate(
model,
tokenizer,
prompt=prompt,
verbose=True,
temp=0.0, # Greedy decoding is recommended for logic
max_tokens=512
)
System Prompt
You are an expert network diagnostic assistant helping home users identify devices on their network.
Given Nmap scan data, your goal is to identify the SPECIFIC device model.
CORE PROTOCOL:
1. START with a <think> block to analyze the data.
2. DETERMINE if the device is specific (e.g. \"OnePlus 10 Pro\") or generic (e.g. \"OnePlus Technology\").
3. END with EXACTLY ONE of the following tags:
[OPTION 1: IDENTIFIED]
If you are 90% certain of the specific model:
<device>Exact Model Name</device>
[OPTION 2: AMBIGUOUS]
If you are NOT certain or need user confirmation:
<question>The clarifying question you want to ask the user</question>
CRITICAL RULES:\n- NEVER use <device> and <question> in the same response.
- NEVER output plain text outside of tags.
Expected Input Format
This is the first message this model should see. It provides some information from Nmap, and in Ping is generated using a Jinja2 template. The first "user" message
is hidden from the GUI, but this is how we originally prompt the model to get it to go first (as it appears to the end user in Ping).
You have received the following device from Nmap.
Details
IP: {{ ip_address }}
MAC: {{ mac_address }}
MAC Vendor: {{ mac_vendor }}
Hostnames Associated with the device:
{% for name in hostnames %}
{{ name }}
{% endfor %}
Nmap Inferred Os Data:
{{ nmap_os_data }}
Ports identified by Nmap on the Device:
{% for service in services %}
- Service ID: {{ service.service_id }}
- Port Number: {{ service.port_number }}
- Protocol: {{ service.protocol }}
- State: {{ service.state }}
- Service Name: {{ service.name }}
- Service Product (if applicable): {{ service.product }}
- Service Version (if applicable): {{ service.version }}
{% endfor %}
Model Outputs
As this model builds off
Qwen/Qwen3-1.7B
, it employs the same Chain of Thought (CoT) format as the base model.
However, the CoT is modified by the LoRA to increase the model's intelligence as it relates to identifying consumer devices.
See the associated dataset for more info regarding CoT modifications.
Two more tags are employed by the model, and .
Note: These are not special tokens, the tokenizer remains the same as the base model
The model will give a response wrapped in question tags (
<question></question>
) when it decides to pose a question to the user for clarification.
Once the model believes it has collected all relevant context it will give it's final guess for the device wrapped in tags (
<device></device>
).
Visualization
An example interaction may look like the following,
assuming boilerplate prompt and system prompt have been passed correctly.
MODEL:
<think>CoT</think>
<question>Do you own...?</question>
ping-device-id-LoRA-001-MLX huggingface.co is an AI model on huggingface.co that provides ping-device-id-LoRA-001-MLX's model effect (), which can be used instantly with this dzur658 ping-device-id-LoRA-001-MLX model. huggingface.co supports a free trial of the ping-device-id-LoRA-001-MLX model, and also provides paid use of the ping-device-id-LoRA-001-MLX. Support call ping-device-id-LoRA-001-MLX model through api, including Node.js, Python, http.
ping-device-id-LoRA-001-MLX huggingface.co is an online trial and call api platform, which integrates ping-device-id-LoRA-001-MLX's modeling effects, including api services, and provides a free online trial of ping-device-id-LoRA-001-MLX, you can try ping-device-id-LoRA-001-MLX online for free by clicking the link below.
dzur658 ping-device-id-LoRA-001-MLX online free url in huggingface.co:
ping-device-id-LoRA-001-MLX is an open source model from GitHub that offers a free installation service, and any user can find ping-device-id-LoRA-001-MLX on GitHub to install. At the same time, huggingface.co provides the effect of ping-device-id-LoRA-001-MLX install, users can directly use ping-device-id-LoRA-001-MLX installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
ping-device-id-LoRA-001-MLX install url in huggingface.co: