模型使用手册

导读

OceanGPT·沧渊 是面向海洋科学和工程任务的专业领域大模型。本手册(v1.0版)将从以下几个方面系统介绍 OceanGPT 的使用方法与部署流程,帮助用户快速理解模型结构、完成环境配置及部署运用:
  • 模型简介:概述 OceanGPT 的架构特点、模型类型与主要功能;
  • 模型下载:提供从 HuggingFace 和 ModelScope 平台获取模型的方式;
  • 模型使用:涵盖 OceanGPT-basic、OceanGPT-o 和 OceanGPT-coder 的使用示例,并介绍如何结合 vLLM、sGlang、llama.cpp 等高性能推理引擎部署使用用;
  • Gradio 演示:提供可视化交互界面部署方式,便于快速测试与集成;
  • 在线系统:展示 OceanGPT 在专业问答、多模态处理、代码生成等任务中的能力;
  • 不足与后续计划:介绍模型的局限性及后续优化方向。

1. 模型简介

OceanGPT 采用多专家混合架构,由多个具备专长能力的子模型协同构成,包括:OceanGPT-basicOceanGPT-o 和 OceanGPT-coder,分别面向海洋专业知识问答、海洋多模态感知与海洋机器人任务编程不同场景,实现功能互补与智能协同。各模型基于不同版本的 Qwen 系列基础模型构建,并针对海洋专业领域数据进行模型精调优化,同时采用KAG知识增强技术和通专结合机制进一步提升海洋专业处理能力。

  • OceanGPT-basic

OceanGPT-basic 基于 Qwen3 架构,在海洋领域的中英文数据集上进行训练,主要负责海洋基础专业知识的理解与问答任务,支持面向科研、教育和信息检索等场景的通用语言交互能力。(注:在线版本的OceanGPT集成了KAG知识增强技术,此处介绍的开源模型在知识问答能力上会弱于在线版本)

当前开源的模型包括:

模型名称
基础架构
开源模型规模
功能定位
OceanGPT-basic-8B
Qwen3
8B
海洋领域通用问答,理解能力强
  • OceanGPT-o

OceanGPT-o 基于 Qwen2.5-VL 架构,在海洋领域的中英文数据集上进行了训练,专注于对声呐、光学等海洋特有多模态感知数据的自然语言理解与解读,支持在目标识别、态势分析与图文问答等任务中的应用。

当前开源的模型包括:

模型名称
基础架构
开源模型规模
功能定位
OceanGPT-o-7B
Qwen2.5-VL
7B
多模态感知理解、图文问答
  • OceanGPT-coder

OceanGPT-coder 基于 Qwen2.5-coder 架构,在混合合成的 MOOS 编程语言代码数据集上进行了训练,具备初步生成水下机器人控制指令的能力。

当前开源的模型包括:

模型名称
基础架构
开源模型规模
功能定位
OceanGPT-coder-7B
Qwen2.5-coder
7B
高性能 MOOS 控制代码生成

2. 模型下载

OceanGPT 支持本地部署与使用,提供多个具备专长能力的开源子模型,用户可根据具体任务需求灵活选择并下载相应模型。为便于后续加载与调用,建议提前下载所需模型文件,并妥善组织至本地目录结构中。您可以通过 Hugging Face 或 ModelScope(魔搭社区)下载 OceanGPT 模型:

模型名称
ModelScope 链接
HuggingFace 链接
OceanGPT-o-7B
7B

7B

OceanGPT-coder-7B

7B

7B

OceanGPT-basic-8B

8B

8B

从 HuggingFace 下载

  • 命令行下载

在下载前,请先通过如下命令安装 Hugging Face 官方提供的命令行工具,自带完善的下载功能。

pip install -U huggingface_hub

使用 huggingface-cli 下载模型

huggingface-cli download --resume-download zjunlp/OceanGPT-o-7B --local-dir OceanGPT-o-7B --local-dir-use-symlinks False
  • Git下载

请确保 lfs 已经被正确安装

git lfs install
git clone https://huggingface.co/zjunlp/OceanGPT-o-7B

从 ModelScope 下载

国内用户建议使用 ModelScope ,具备更快的访问速度和更稳定的下载体验。

  • 命令行下载

在下载前,请先通过如下命令安装ModelScope

pip install modelscope

下载完整模型库

modelscope download --model ZJUNLP/OceanGPT-o-7B
  • Git下载

请确保 lfs 已经被正确安装

git lfs install
git clone https://www.modelscope.cn/ZJUNLP/OceanGPT-o-7B.git

请注意:在线演示系统(包括演示视频)中的海洋领域问答采用了KAG知识库增强与“通专结合”技术,因此其生成内容与开源模型存在差异。

有关KAG知识增强技术的集成和使用方法后续将在单独的技术博文中进行介绍

❗当前开源版本的OceanGPT-o 仅支持对部分声纳图像和海洋科学图像进行自然语言解读与生成,推荐使用显存不低于 24GB 的 GPU。

3. 模型使用

用户在本地环境中加载并使用 OceanGPT 执行推理任务。所有子模型均兼容 Hugging Face Transformers 框架,支持通过标准接口加载模型与分词器。模型文件既可以通过上一节提供的方式提前下载,也可以在代码中直接从 Hugging Face 远程加载,无需手动下载。

本节将展示如何基于 transformers 库加载 OceanGPT 模型,并进行基本的推理调用,包括模型初始化、输入编码与输出生成等操作,帮助用户快速完成本地运行与测试。

3.1 OceanGPT-basic-8B 使用示例

(1)导入所需库,加载模型

导入所需库、指定模型名称,并调用 from_pretrained 接口,加载分词器和模型。 如果您提前下载了模型,请把 model_name 请替换为对应路径。 参数 torch_dtype 和 device_map 也可根据实际需求自行指定,如手动设置为 torch.float16 或固定加载到 cuda:0

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "zjunlp/OceanGPT-basic-8B"

# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
)
(2)构造对话输入

定义用户问题,并构造符合对话格式的 message 列表。支持多轮对话结构。

question = "<Your Question>"
messages = [
    {"role": "user", "content": question}
]
(3)构建模型输入

使用 apply_chat_template 方法将对话消息转为模型可接受的文本格式,并编码为 tensor。可以自动添加生成提示符 <|im_start|>assistant 等。

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=False 
)

model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
(4)执行文本生成

调用 generate 方法生成回复,截取出新增 token(排除原始输入部分)。生成长度可根据需要设置。

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=8192
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist() 
(5)后处理与解析输出

若模型启用了“思维块(…)”,这部分用于跳过 <think> 内容,仅提取正式回答。151668 是 </think> 的 token ID,可换为对应模型字典中的实际值。

try:
    index = len(output_ids) - output_ids[::-1].index(151668)  # </think> token ID
except ValueError:
    index = 0

content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print(content)

3.2 OceanGPT-o-7B 使用示例

(1)安装依赖库

请先安装下列工具包,帮助您更便捷地处理多种类型的视觉输入,包括 base64 编码、URL 链接、交错排列的图像与视频等多种格式:

# It's highly recommanded to use `[decord]` feature for faster video loading.
pip install qwen-vl-utils[decord]==0.0.8
pip install transformers
(2)导入模型与工具模块
from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, Qwen2VLProcessor
from qwen_vl_utils import process_vision_info
import torch
(3)加载OceanGPT-o-7B 模型与处理器
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    "zjunlp/OceanGPT-o-7B", torch_dtype=torch.bfloat16, device_map="auto"
)
processor = Qwen2VLProcessor.from_pretrained("zjunlp/OceanGPT-o-7B")
(4)构造图文混合输入消息

构造符合模型格式的消息结构,包含图像(通过 file:// 指向本地路径)与配套文本描述,作为用户的一轮输入。

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "image": "file:///path/to/your/image.jpg",
            },
            {"type": "text", "text": "Describe this image."},
        ],
    }
]

(5)处理输入并编码为模型格式
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
inputs = inputs.to("cuda")
(6)模型生成与输出解析
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
    out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
    generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
3.3 OceanGPT-coder-7B 使用示例

整体代码结构与 3.1 中的 OceanGPT-basic-8B 类似,以下是完整示例代码:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
    "zjunlp/OceanGPT-coder-7B", torch_dtype=torch.float16, device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("zjunlp/OceanGPT-coder-7B")
messages = [
    {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
    {"role": "user", "content": "请为水下机器人生成MOOS代码,实现如下任务:先回到(50,20)点,然后以(15,20)点为圆形,做半径为30的圆周运动,持续时间200s,速度4 m/s。"}
]
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,
    top_p=0.6,
    temperature=0.6,
    max_new_tokens=2048
)
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)

3.4 使用 SGLang、vLLM、ollama、llama.cpp 进行高效推理

(1)SGLang

用户可以通过 SGLang 平台便捷地部署与调用 OceanGPT 系列模型,支持文本与多模态输入处理、chat 模板解析以及自动生成 API 接口,进一步提升推理效率与集成灵活性。

  • 安装 SGLang
pip install --upgrade pip
pip install uv
uv pip install "sglang[all]>=0.4.6.post4"
  • 启动SGLang服务
import requests
from openai import OpenAI
from sglang.test.test_utils import is_in_ci

if is_in_ci():
    from patch import launch_server_cmd
else:
    from sglang.utils import launch_server_cmd

from sglang.utils import wait_for_server, print_highlight, terminate_process

server_process, port = launch_server_cmd(
    "python3 -m sglang.launch_server --model-path zjunlp/OceanGPT-o-7B --host 0.0.0.0"
)

wait_for_server(f"http://localhost:{port}")
  • 与模型对话
import requests

url = f"http://localhost:{port}/v1/chat/completions"

data = {
    "model": "Qwen/Qwen2.5-VL-7B-Instruct",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What’s in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://github.com/sgl-project/sglang/blob/main/test/lang/example_image.png?raw=true"
                    },
                },
            ],
        }
    ],
    "max_tokens": 300,
}

response = requests.post(url, json=data)
print_highlight(response.text)
(2)vLLM
  • 安装 vllm 库
pip install vllm      # 建议vllm版本(>=0.8.5)
  • 使用 vllm 推理
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams

path = 'YOUR-MODEL-PATH'

tokenizer = AutoTokenizer.from_pretrained(path)

prompt = "Which is the largest ocean in the world?"
messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)

sampling_params = SamplingParams(temperature=0.8, top_k=50)
llm = LLM(model=path)

response = llm.generate(text, sampling_params)
(3)ollama
  • 创建一个名为 Modelfile 的文件

指定模型源文件为当前目录下的 OceanGPT.gguf,并设置提示词模板(Prompt Template),用于对用户输入进行格式化。

FROM ./OceanGPT.gguf
TEMPLATE "[INST] {{ .Prompt }} [/INST]"

  • 在 Ollama 中创建模型:

使用 Modelfile 构建一个名为 example 的本地模型实例。

ollama create example -f Modelfile
  • 运行模型
ollama run example "What is your favourite condiment?"
(4)llama.cpp
  • 克隆 llama.cpp 并编译

克隆官方 llama.cpp 项目并使用 cmake 构建命令行工具 llama-cli,该工具用于运行 GGUF 格式模型。

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build
cmake --build build --config Release
  • 将 Hugging Face 格式模型转换为 GGUF

使用转换脚本将 OceanGPT 的 PyTorch 模型转换为 GGUF 格式,输出为。该脚本需确保模型文件已下载并位于指定路径。

python convert-hf-to-gguf.py OceanGPT --outfile OceanGPT.gguf
  • 运行模型进行推理
./llama-cli -m OceanGPT.gguf \
  -co -cnv -p "Your prompt" \
  -fa -ngl 80 -n 512

4. Gradio演示

(1)启动Gradio

您可以使用我们提供的 app.py 文件轻松地在本地部署交互式界面。
# 请替换 app.py 中的模型路径为本地模型路径,并留有足够的显存空间加载相应的模型。
python app.py

然后可以在浏览器中打开 https://localhost:7860/ ,享受与  OceanGPT 的互动。

(2)功能演示

  • 海洋专业问答

您可以使用 OceanGPT-basic 进行海洋科学问答。

1. 输入查询问题,可按需上传 PDF 或 Word 文档。比如“如何区分自然形成的海底岩石与人造石质建筑遗迹?”

2. 选择生成的超参数。比如将 temperature (温度)设置为0.6,top_p 设置为1,max_tokens 设置为2048。

3. 运行并得到海洋科学问答的答案。上述问题的答案如下所示。由于温度导致的随机性和模型固有的幻觉,建议您进行多次采样,以获得更好的输出结果。

要区分自然形成的海底岩石与人造石质建筑遗迹,可以从多个方面进行分析。以下将从地质特征、形态结构、成分分析以及环境影响等角度详细说明如何进行区分。
    
---

### 1. 地质特征分析

#### (1)自然岩石
自然岩石通常具有以下特征:
    - **形成过程**:自然岩石是由地壳运动、火山活动、沉积作用等多种地质过程形成的。例如,花岗岩是由岩浆侵入地壳深处冷却凝固而形成的。
    - **分布规律**:自然岩石往往具有一定的分布规律,如层状堆积、区域分布等,它们的形成受到地壳运动和地形变化的影响。
    - **表面纹理**:自然岩石的表面通常较为粗糙,可能带有风化裂纹、矿物颗粒等自然形成的痕迹。
    - **硬度和密度**:自然岩石的硬度和密度因矿物成分不同而有所差异,但总体上具有较高的硬度,能够抵抗风化和侵蚀。

#### (2)人造石质建筑遗迹
人造石质建筑遗迹则具有以下特征:
    - **人为加工痕迹**:人造石质建筑遗迹通常具有明显的加工痕迹,如切割痕迹、凿刻痕迹等,这些痕迹表明其经过人工加工。
    - **形状和结构**:人造石质建筑遗迹通常具有规则的形状和结构,如方块、长条、圆形等,符合人类建筑的设计要求。
    - **排列方式**:人造石质建筑遗迹往往按照一定的排列方式排列,形成建筑结构,如墙、柱、屋顶等。
    - **表面光滑度**:人造石质建筑遗迹的表面通常较为光滑,可能经过打磨或抛光处理。
    
---

### 2. 形态结构分析

#### (1)自然岩石
自然岩石的形态结构通常表现为:
    - **层状堆积**:自然岩石常常以层状堆积的形式存在,每一层可能具有不同的矿物成分和颜色。
    - **断层和裂缝**:自然岩石中常见的断层和裂缝是地壳运动的直接表现,这些断层和裂缝通常较为规则,且与地壳运动的方向一致。
    - **风化和侵蚀**:自然岩石的表面通常受到风化和侵蚀的影响,形成不同的地貌特征,如沟壑、洞穴等。

#### (2)人造石质建筑遗迹
人造石质建筑遗迹的形态结构通常表现为:
    - **几何形状**:人造石质建筑遗迹通常具有规则的几何形状,如方块、长条、圆形等,符合人类建筑的设计要求。
    - **排列方式**:人造石质建筑遗迹往往按照一定的排列方式排列,形成建筑结构,如墙、柱、屋顶等。
    - **连接结构**:人造石质建筑遗迹通常具有连接结构,如榫卯结构、嵌入式结构等,这些结构能够增强建筑的整体稳定性。
    
---

### 3. 成分分析

#### (1)自然岩石
自然岩石的成分通常较为复杂,主要由硅酸盐矿物、碳酸盐矿物等组成。例如,花岗岩主要由石英、长石、云母等矿物组成,而玄武岩则主要由辉石、磁铁矿等矿物组成。这些矿物成分决定了自然岩石的物理和化学性质。

#### (2)人造石质建筑遗迹
人造石质建筑遗迹的成分通常较为单一,主要由硅酸盐矿物、碳酸盐矿物等组成,但比例和种类与自然岩石有所不同。例如,人造石质建筑遗迹中的硅酸盐矿物可能以石英、长石为主,而碳酸盐矿物可能以方解石、白云石为主。这些矿物成分决定了人造石质建筑遗迹的物理和化学性质。
    
---

### 4. 环境影响分析

#### (1)自然岩石
自然岩石的形成和分布受到环境因素的影响,如气候、地形、水文等。例如,湿润的气候条件下,自然岩石容易受到风化和侵蚀,形成不同的地貌特征。地形变化较大的地区,自然岩石的分布也较为复杂。

#### (2)人造石质建筑遗迹
人造石质建筑遗迹的形成和分布受到人类活动的影响。例如,建筑施工过程中,人类会使用不同的材料和工艺,导致人造石质建筑遗迹的成分和结构与自然岩石有所不同。此外,人造石质建筑遗迹的分布通常受到人类活动的直接影响,如城市建设、港口建设等。
    
---

### 5. 实际应用中的区分方法

#### (1)地质调查
通过地质调查,可以了解自然岩石和人造石质建筑遗迹的分布情况。例如,通过钻探、取样等方法,可以获取岩石的成分和结构信息,从而判断其来源。

#### (2)遥感技术
遥感技术可以通过卫星图像、航空照片等方式,观察自然岩石和人造石质建筑遗迹的形态和分布。例如,人造石质建筑遗迹通常具有明显的几何形状和排列方式,可以通过遥感技术进行识别。

#### (3)三维建模
通过三维建模技术,可以重建自然岩石和人造石质建筑遗迹的形态和结构。例如,通过激光扫描、摄影测量等方法,可以获取岩石的三维数据,从而判断其来源。

#### (4)实验室分析
通过实验室分析,可以获取自然岩石和人造石质建筑遗迹的成分和结构信息。例如,通过X射线衍射、电子显微镜等方法,可以分析岩石的矿物成分和结构特征,从而判断其来源。
    
---

### 总结

区分自然形成的海底岩石与人造石质建筑遗迹,需要从地质特征、形态结构、成分分析、环境影响等多个方面进行综合分析。通过地质调查、遥感技术、三维建模、实验室分析等方法,可以有效地区分自然岩石和人造石质建筑遗迹,从而为考古研究和海洋工程提供科学依据。
  • 海洋科学图像解读
您可以使用 OceanGPT-o 进行海洋科学图像识别。
    1. 输入查询问题与图像。比如“请分析 CTD 投放站点(以空白方块和空心圆表示)的布局和分布,结合阿尔塔马哈河口海湾水流结构在横断面和沿河方向上的变化。这些站点的设置如何有助于获取关键数据,从而在河道不同区域上估算残余流和净输运?”与相应的海洋科学图像。
    2. 选择生成的超参数。比如将 temperature (温度)设置为0.6,top_p 设置为1,max_tokens 设置为2048。
    3. 运行并得到海洋科学图像识别的答案。上述问题的答案如下所示。由于温度导致的随机性和模型固有的幻觉,建议您进行多次采样,以获得更好的输出结果。
### 图像分析与专业解读
    
#### **图像内容概述**
图像展示了一个海洋科学实验的采样路线和位置,具体包括:
1. **采样点(Stations)**:图中标注了多个采样点,编号为 St-0、St-1、St-2、St-3、St-4、St-6,分别位于不同位置。
2. **采样方法**:图像中显示了两种采样方法:
    - **CTD(Conductivity-Temperature-Depth)采样**:通过黑色圆点表示,采样点位于图中的多个位置。
    - **ADCP(Acoustic Doppler Current Profiler)采样**:通过灰色虚线表示,采样路径为一条轨迹线。
3. **浮标位置**:图右上角的小图显示了浮标的位置,标记为 Buoy 41008,位于地理坐标(31°N, 81°W)。
4. **区域特征**:图像显示了沿海区域的水深分布,水深以等深线的形式表示,从浅水区域(水深小于10米)到深水区域(水深大于10米)。

#### **图像中的关键信息**
- **采样点分布**:采样点主要集中在沿海区域,特别是靠近海岸线和水深较浅的区域。这种分布可能与潮汐、洋流或海洋环境的复杂性有关。
- **CTD采样**:CTD采样点分布较为密集,可能用于测量水温、盐度和深度等参数,以了解水体的垂直结构和物理性质。
- **ADCP采样**:ADCP采样路径为一条轨迹线,可能用于测量洋流的方向和速度,进一步研究水体的流动特性。
- **浮标位置**:Buoy 41008的位置位于图右上角,其作用可能是作为参考点,提供实时的海洋环境数据,例如海面风速、气压等。

#### **专业分析**
1. **采样点与水深的关系**:
    - 从图像中可以看到,采样点(尤其是St-0、St-1、St-2)主要集中在水深较浅的区域,这可能与潮汐现象、近岸洋流或海洋生态系统对浅水区域的敏感性有关。
    - 水深越浅,海洋生物多样性可能越高,因此在这些区域进行采样有助于研究水体的生物特征和生态过程。
    
2. **CTD与ADCP的协同作用**:
    - CTD采样主要用于获取水体的物理参数,如温度、盐度和深度,这些数据可以用于构建水体的垂直剖面图,帮助研究水体的稳定性、分层结构或可能的水体交换。
    - ADCP采样主要用于测量洋流的速度和方向,结合CTD数据,可以进一步分析水体的混合过程、动力学特征以及洋流对水体的输送作用。
    
3. **浮标的作用**:
    - 浮标(Buoy 41008)的位置和功能是关键,它可能用于提供实时的气象数据,如风速、气压等,这些数据可以与水下采样数据相结合,以更好地理解海洋环境的综合变化。
    - 浮标的位置(31°N, 81°W)表明实验可能在特定的海洋区域进行,例如大西洋沿岸或相关海域,该区域可能是研究潮汐、洋流或海洋生态的重要地点。
    
4. **水体深度与采样点分布的关联**:
    - 图中显示,水深分布范围较广,从浅水区到深水区都有采样点分布。这种分布策略可能旨在研究水体的垂直和水平结构,包括海水密度、洋流模式、生物分布等。
    - 浅水区域的采样点分布可能更多地关注潮汐、近岸洋流和生物多样性,而深水区域的采样点可能更多地关注洋流动力学和水体的垂直分层。

#### **总结**
图像中的采样点、采样方法和浮标位置共同构成了一个综合的海洋科学实验设计,旨在研究水体的物理、动力学和生态特征。CTD采样和ADCP采样是研究水体垂直结构和洋流的关键手段,而浮标则提供了实时的气象数据,有助于整合水下和水面上的观测结果。这种多维度的采样策略能够为研究海洋环境的复杂性提供全面的数据支持,特别是在潮汐、洋流和生物多样性等关键问题上。
  • 海洋声呐图像解读
您可以使用 OceanGPT-o 进行声呐图像识别。
    1. 输入查询问题与图像。比如“作为海洋科学家,请分析所提供的声呐图像。描述在图像中检测到的物体,并尽可能详细地说明它们的位置。”与相应的声呐图像。
    2. 选择生成的超参数。比如将 temperature (温度)设置为0.6,top_p 设置为1,max_tokens 设置为2048。
    3. 运行并得到声呐图像识别的答案。上述问题的答案如下所示。由于温度导致的随机性和模型固有的幻觉,建议您进行多次采样,以获得更好的输出结果。
### 科学详细分析
    
图像中观察到的目标显示出明显的多分区结构,其形状类似于一个类似轮毂或叶片的物体,具有多个叶片状或分段特征。目标的亮度分布不均匀,中央区域亮度较高,周围区域亮度较低,这可能是由于目标的材料反射特性或表面结构差异导致的。目标位于图像的中心偏上方位置,呈现出一定的倾斜姿态,且底部有一条明显的细长阴影,指向图像的右下角,这可能表明目标正在以倾斜角度移动或悬挂在空中。结合图像背景的黑暗环境和目标的复杂结构,可以推测该目标可能是一个人工制造的物体,例如某种机械装置或水下探测设备,其姿态和位置表明它可能正处于工作状态或被部署在特定的环境中。这一分析支持了目标为复杂机械结构的结论,进一步研究可能需要结合其他传感器数据(如声纳或光学图像)来确认其具体类型和功能。
  • 水下机器人MOOS 代码生成
您可以使用 OceanGPT-coder 进行 MOOS 代码生成。
    1. 输入查询问题。比如“请为水下机器人生成MOOS代码,执行声呐数据采集任务:按照顺序分别往以下几点 60,-40:60,-160:150,-160:180,-100:150,-40,速度为2m/s,任务执行两次,任务完成后返回原点”。
    2. 选择生成的超参数。比如将 temperature (温度)设置为0.6,top_p 设置为1,max_tokens 设置为2048。
    3. 运行并获取 MOOS 代码。上述问题的答案如下所示。由于温度导致的随机性和模型固有的幻觉,建议您进行多次采样,以获得更好的输出结果。
根据用户指令,水下机器人需要依次完成以下操作:
1.按照顺序前往坐标点(60,-40)、(60,-160)、(150,-160)、(180,-100)、(150,-40)
2.速度设置为2m/s
3.任务执行两次
4.任务完成后返回原点
根据我的思考,水下机器人执行此任务的MOOS代码为:

    ```moos
initialize   DEPLOY = true //任务执行标志位,false不执行,true执行
initialize   RETURN = false //返回零点标志位,false返回,true不返回
initialize   MODE = LIFT //模式先初始化为“LIFT”

Behavior = BHV_Waypoint

    name      = waypt_survey // 将该行为命名成“waypt_survey”
    pwt       = 100  //优先级权重系数,一般赋值100
    condition = RETURN = false //任务执行条件:RETURN标志位需要等于false
    condition = DEPLOY = true //任务执行条件:DEPLOY标志位需要等于true
    endflag   = RETURN = true //任务完成后,将RETURN标志位置为true
    perpetual = true   //一般默认true
    speed = 2   // meters per second
    radius = 2.0// 判断是否到达某点的准则:倘若此时潜水器位置(x,y)距离期望点(x0,y0)小于2m,判断该点已到达,潜水器朝下一点前进    
    points = 60,-40:60,-160:150,-160:180,-100:150,-40
    repeat = 1 //该任务执行2次
}

Behavior = BHV_Waypoint
{
    name       = waypt_return // 将该行为命名成“waypt_return”
    pwt        = 100 //权重系数,一般赋值100
    condition  = RETURN = true //任务执行条件:RETURN标志位需要等于true
    condition  = DEPLOY = true //任务执行条件:DEPLOY标志位需要等于true
    perpetual  = true //默认
    endflag    = RETURN = false //任务完成后,将RETURN标志位置为false
    endflag    = DEPLOY = false //任务完成后,将DEPLOY标志位置为false
    speed = 2 // 潜水器行进速度2m/s
    radius = 2.0 // 判断是否到达某点的准则:倘若此时潜水器位置(x,y)距离期望点(x0,y0)小于2m,判断该点已到达,潜水器朝下一点前进
    point = 0,0 //原点
}
    ```

5. 在线体验

除了支持开源模型的本地下载与离线部署,我们还提供了在线大模型访问服务,用户可直接访问:

👉 http://oceangpt.org/ 在线体验 OceanGPT 的多轮对话、海洋知识问答与多模态处理能力。

5.1 海洋专业问答

基于大规模海洋科学文献训练,融合知识图谱驱动的指令合成、模型微调与知识检索增强机制,相较通用大模型在海洋专业知识理解方面展现出相对较好的准确性和专业性。(注:在线系统支持KAG知识增强技术,并采用集成DeepSeek的通专结合模式,与开源模型的输出结果会有不同。)

5.2 海洋多模态数据理解

专注于对声呐、光学等海洋特有多模态感知数据的自然语言理解与解读,当前模型已初步具备对声纳的自然语言解读能力,可将声纳信息转化为简明易懂的文本描述,同时也支持对海洋科学图像等常规多模态数据的分析解读。

5.3 机器人控制代码自动生成

基于机器人代码语料训练,具备将人类语言指令转化为可执行代码的能力,驱动海洋机器人完成任务。

例如,当用户发出前往某个指定位置并采集声纳数据的语言形式指令时,模型会自动解析任务意图,完成任务编排,并通过思考流程生成初步方案,进而生成对应的控制代码。该代码随后注入水下机器人,采集的数据可回传至大模型进一步进行分析与解读。

当前,该模型仅支持生成 MOOS 代码,计划在未来扩展其能力,以支持更多水下机器人平台的代码生成任务。

6. 不足与后续计划

作为一个探索性项目,OceanGPT 目前仍有诸多待完善之处。例如,受大模型“幻觉”问题影响,部分回答尚不够准确;多模态能力仍处于初步打磨阶段;代码模型暂时依赖云端运行。接下来,我们将持续扩展海洋知识库,引入更多类型的多模态海洋数据,并推进代码模型的端侧部署,重点提升模型的稳健性与适配性。能力和水平所限,诚挚欢迎提出宝贵意见与建议,感谢您的关注与支持!

本手册由徐柯伟、邱至松、王晨曦、薛逸达、邓鸿杰等协力完成,特此致谢。

 

问题反馈,请提交 issue 至:https://github.com/zjunlp/OceanGPT

或者邮箱:zhangningyu@zju.edu.cn