初始化项目,由ModelHub XC社区提供模型

Model: KurmaAI/AQUA-1B
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-04-13 09:55:56 +08:00
commit 71973cf290
13 changed files with 51672 additions and 0 deletions

49
.gitattributes vendored Normal file
View File

@@ -0,0 +1,49 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bin.* filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zstandard filter=lfs diff=lfs merge=lfs -text
*.tfevents* filter=lfs diff=lfs merge=lfs -text
*.db* filter=lfs diff=lfs merge=lfs -text
*.ark* filter=lfs diff=lfs merge=lfs -text
**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text
**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text
**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.gguf* filter=lfs diff=lfs merge=lfs -text
*.ggml filter=lfs diff=lfs merge=lfs -text
*.llamafile* filter=lfs diff=lfs merge=lfs -text
*.pt2 filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
tokenizer.json filter=lfs diff=lfs merge=lfs -text

BIN
AQUA-1B.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

133
README.md Normal file
View File

@@ -0,0 +1,133 @@
---
license: apache-2.0
tags:
- text-generation-inference
- transformers
language:
- en
base_model:
- google/gemma-3-1b-it
pipeline_tag: text-generation
---
<p align="center">
<img src="./AQUA-1B.png" alt="AQUA-1B" width="600" style="border-radius: 6px;"/>
</p>
# Model Information
**AQUA-1B** is Kurma AIs compact and efficient **1-billion parameter Small Language Model (SLM)**, It is the **first lightweight Aquaculture domain-specific model** purpose-built for real-time aquaculture operations involving IoT sensor data, autonomous systems, and robotic agents.
Designed for edge deployments and low-latency environments, **AQUA-1B** enables on-device decision-making, real-time alert generation, and agentic task execution. It powers intelligent aquaculture systems for Water quality monitoring, Automated feeding routines, Mobile robotic inspections across ponds, tanks, and recirculating aquaculture systems (RAS)
Learn more about [Kurma AI](https://kurma.ai/company).
---
# Key Features
- **Edge-Ready Intelligence** Optimized for low-power, real-time inference on embedded devices like Raspberry Pi, Jetson Nano, and Coral TPU.
- **Agentic Task Execution** Supports multi-step agent-based workflows such as sensor checks, feeding triggers, water exchange scheduling, and autonomous health checks using instruction-following prompts.
- **IoT-Aware Reasoning** Natively understands and reasons over sensor data inputs (e.g., temperature, pH, TDS, turbidity, DO), enabling rapid decisions in fluctuating aquaculture environments.
- **Robotic Automation Control** Designed to interact with robotic systems, including underwater, and mobile pond inspectors.
- **Autonomous Alerting Systems** Powers local alert mechanisms (via SMS, Telegram bots, or MQTT) that notify farmers when water parameters exceed safe thresholds or when interventions are required.
- **Field-Deployable Decision Engine** Enables fully autonomous operation in remote hatcheries and ponds, ensuring uninterrupted control even in offline conditions or low-connectivity zones.
---
# Training Data Highlights
- Extension workerfarmer dialogues and field advisory logs
- FAO, ICAR, NOAA, and peer-reviewed aquaculture research
- Synthetic Q&A from 5,000+ aquaculture-focused topics
- Climate-resilient practices, hatchery SOPs, and water quality datasets
- Carefully curated to support **species-specific culture** methods
- **Scale:** Trained on approximately **3 million real and synthetic Q&A pairs**, totaling around **1 billion tokens** of high-quality, domain-specific data.
---
# Model Specifications
- **Base Model**: Gemma 3 1B (by [Google DeepMind](https://deepmind.google/))
- **Training Tokens**: ~1 Billion
- **Released On** 4, July 2025
- **Data Volume**: 3M+ expert-verified and synthetic instructions
- **Origin**: Made in America by [Kurma AI](https://kurma.ai/)
- **Training Technic** Model is trained via Fine-tuning using (LoRA-based) Supervised Fine-Tuning (SFT).
- **Training Infrastructure**: Trained using **8 NVIDIA H200 GPU Multi Cluster**
Special Thanks to [Nebius](https://nebius.com/)
---
# Quickstart
Transformers (Google Colab/ jupyter)
- Install dependencies
```python
!pip install transformers accelerate
```
- Log in with your Hugging Face access token
```python
from huggingface_hub import login
```
- Import model from Huggingface
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "KurmaAI/AQUA-1B"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto", # Automatically uses GPU if available
torch_dtype=torch.float16, # Use torch.float32 if no GPU
trust_remote_code=True
)
```
- Test Prompt
```python
prompt = "What are the most common diseases in shrimp farming and how can they be prevented?"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
```
---
# 🙏 Acknowledgements
This project was made possible thanks to:
- [Nebius](https://nebius.com/) for providing a compute grant and access to NVIDIA H200 GPU servers, which powered the model training process.
- [Google DeepMind](https://deepmind.google/) for sharing their open-source language models, which made this project possible.
- Kurma AI research team: including aquaculture experts, machine learning engineers, data annotators, and advisors who collaborated to curate, verify, and refine the domain-specific dataset used for fine-tuning this model.
---
# ⚠️ Disclaimer, Bias & Limitations
- **Domain Bias**: The model may reflect inherent biases present in the aquaculture data sources and industry practices on which it was trained.
- **Temporal Data Limitation**: Climate and environmental recommendations are based on information available up to 2024. Users should cross-check any climate-related advice against the latest advisories (e.g., IMD or NOAA updates).
- **Potential Hallucinations**: Like all large language models, Aqua-1B may occasionally generate inaccurate or misleading responses ("hallucinations").
- **Always validate critical, regulatory, or high-impact decisions with a qualified aquaculture professional.**
---
# Citation
```bibtex
@article{narisetty2025aqua,
title={AQUA: A Large Language Model for Aquaculture \& Fisheries},
author={Narisetty, Praneeth and Kattamanchi, Uday Kumar Reddy and Nimma, Lohit Akshant and Karnati, Sri Ram Kaushik and Kore, Shiva Nagendra Babu and Golamari, Mounika and Nageshreddy, Tejashree},
journal={arXiv preprint arXiv:2507.20520},
year={2025},
doi={10.48550/arXiv.2507.20520}
}
```

3
added_tokens.json Normal file
View File

@@ -0,0 +1,3 @@
{
"<image_soft_token>": 262144
}

47
chat_template.jinja Normal file
View File

@@ -0,0 +1,47 @@
{{ bos_token }}
{%- if messages[0]['role'] == 'system' -%}
{%- if messages[0]['content'] is string -%}
{%- set first_user_prefix = messages[0]['content'] + '
' -%}
{%- else -%}
{%- set first_user_prefix = messages[0]['content'][0]['text'] + '
' -%}
{%- endif -%}
{%- set loop_messages = messages[1:] -%}
{%- else -%}
{%- set first_user_prefix = "" -%}
{%- set loop_messages = messages -%}
{%- endif -%}
{%- for message in loop_messages -%}
{%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}
{{ raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") }}
{%- endif -%}
{%- if (message['role'] == 'assistant') -%}
{%- set role = "model" -%}
{%- else -%}
{%- set role = message['role'] -%}
{%- endif -%}
{{ '<start_of_turn>' + role + '
' + (first_user_prefix if loop.first else "") }}
{%- if message['content'] is string -%}
{{ message['content'] | trim }}
{%- elif message['content'] is iterable -%}
{%- for item in message['content'] -%}
{%- if item['type'] == 'image' -%}
{{ '<start_of_image>' }}
{%- elif item['type'] == 'text' -%}
{{ item['text'] | trim }}
{%- endif -%}
{%- endfor -%}
{%- else -%}
{{ raise_exception("Invalid content type") }}
{%- endif -%}
{{ '<end_of_turn>
' }}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{'<start_of_turn>model
'}}
{%- endif -%}

37
config.json Normal file
View File

@@ -0,0 +1,37 @@
{
"architectures": [
"Gemma3ForCausalLM"
],
"attention_bias": false,
"attention_dropout": 0.0,
"attn_logit_softcapping": null,
"bos_token_id": 2,
"cache_implementation": "hybrid",
"eos_token_id": [
1,
106
],
"final_logit_softcapping": null,
"head_dim": 256,
"hidden_activation": "gelu_pytorch_tanh",
"hidden_size": 1152,
"initializer_range": 0.02,
"intermediate_size": 6912,
"max_position_embeddings": 32768,
"model_type": "gemma3_text",
"num_attention_heads": 4,
"num_hidden_layers": 26,
"num_key_value_heads": 1,
"pad_token_id": 0,
"query_pre_attn_scalar": 256,
"rms_norm_eps": 1e-06,
"rope_local_base_freq": 10000,
"rope_scaling": null,
"rope_theta": 1000000,
"sliding_window": 512,
"sliding_window_pattern": 6,
"torch_dtype": "bfloat16",
"transformers_version": "4.52.4",
"use_cache": true,
"vocab_size": 262144
}

1
configuration.json Normal file
View File

@@ -0,0 +1 @@
{"framework": "pytorch", "task": "text-generation", "allow_remote": true}

13
generation_config.json Normal file
View File

@@ -0,0 +1,13 @@
{
"bos_token_id": 2,
"cache_implementation": "hybrid",
"do_sample": true,
"eos_token_id": [
1,
106
],
"pad_token_id": 0,
"top_k": 64,
"top_p": 0.95,
"transformers_version": "4.52.4"
}

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd9180947a56e2a27d5c5d728aeb0a06e274db5df945576bfe61b22cfc8a4189
size 1999811208

33
special_tokens_map.json Normal file
View File

@@ -0,0 +1,33 @@
{
"boi_token": "<start_of_image>",
"bos_token": {
"content": "<bos>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"eoi_token": "<end_of_image>",
"eos_token": {
"content": "<end_of_turn>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"image_token": "<image_soft_token>",
"pad_token": {
"content": "<pad>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"unk_token": {
"content": "<unk>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

3
tokenizer.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4667f2089529e8e7657cfb6d1c19910ae71ff5f28aa7ab2ff2763330affad795
size 33384568

3
tokenizer.model Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1299c11d7cf632ef3b4e11937501358ada021bbdf7c47638d13c0ee982f2e79c
size 4689074

51347
tokenizer_config.json Normal file

File diff suppressed because it is too large Load Diff