原始 MediaWiki 页面

我知道编辑这个网站吗?
the Fiji distribution of ImageJ本页介绍与 the Fiji distribution of ImageJ 相关的内容。点击徽标查看详情。

斐济群岛

自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南

斐济群岛是一个为斐济带来集群功能的插件

概述

Fiji Archipelago是一个工具,旨在使程序员可以通过网络导出到其他几台计算机轻松启动Fiji/ImageJ功能。

就本文而言,根节点是启动和管理集群的计算机。客户端节点是执行从根节点导出的计算的计算机。程序由多个进程组成,计算结果导出到客户端节点。

客户端节点可以由根节点启动,或者根节点可以配置为接受来自已手动启动的客户端节点的连接。情况默认下,如果可能,通信是通过 ssh 上的标准 IO 完成的,也但选择通过不安全的设备可以完成。

要求

  • 根节点和客户端节点都应安装相同版本的Fiji。
  • 斐济群岛使用 ssh 和 ssh 必须对身份验证因此,服务器具有与客户端上第 authorized_hosts 中的公钥相匹配的私钥文件。
  • 如果需要文件传输,服务器和客户端必须能够访问共享网络文件服务器。

其中,这仅在 Linux 机器上进行了广泛的测试,但它应该是独立于平台的。

##特点

  • 即时添加新的资源节点
  • 自然资源集群。节点可以手动启动(这有安全隐患)。
  • 在崩溃或取消的节点上运行的进程会自动重新调度。
  • 安全性 - 默认情况下,根/客户端通信是通过 ssh 标准 IO 完成的。
  • Easy API - 将 Callables 提交到 ExecutorService。

满足

现有群岛插件

adding 群岛更新站点提供以下插件。

TrakEM2 群岛

该插件允许在 TrakEM2 中进行新生儿最小二乘和弹性对齐。右键单击 TrakEM2 窗口,然后选择“设置集群…”。如果您尚未启动 Archipelago 集群,系统将提示您启动。像往常一样开始对齐。

批量 Weka 分割

该插件通过 Trainable Weka Segmentation 插件加速图像分类。要使用它,请创建一个分类器并保存它(即.model 文件)。

通过选择PluginsClusterStart Cluster…运行批量分割插件。

该插件专为二维串联部分而设计。

启动集群

  • 从ImageJ窗口中,选择PluginsBatchWeka Segmentation 2D

集群用户界面将打开。集群启动前必须进行配置。 Fiji Archipelago cluster user interface

配置根节点

Fiji Archipelago root node configuration dialog

  • 单击配置根节点…按钮
    • Local Exec Root: The folder containing your local fiji (or ImageJ) executable. This field may disappear in future versions.
    • Local File Root: A shared network folder, if one is available. Not necessary for most jobs.
    • User Name: Your user name on this machine
    • Default Client Exec Root: The folder containing fiji (or ImageJ) on most remote clients. This field may disappear in future versions.
    • Default Client File Root: The matching network folder, relative to remote clients.
  • 单击“确定”按钮 ####配置远程节点
通过 SSH

Archipelago 使用 JSch 通过 ssh 启动远程节点。这需要密钥文件身份验证,以便斐济群岛避免存储您的难题。关于根节点和客户端节点如何通信有两种选择。

默认是 SSH Shell 方法,它使用 ssh 上的标准 IO 进行通信。此方法的优点是流量已加密,并且安全问题将由您的 ssh 实现来解决。

另一个选项是不安全的安装套件方法,该方法通过 ssh 启动远程节点将它们连接到在根节点上运行的不安全服务器。这可能会更快,但不应该在未受保护的网络上使用。 Fiji Archipelago cluster node configuration window

  • 单击配置集群节点… 本次将打开集群资源配置窗口

  • 点击添加节点… Fiji Archipelago add new cluster node dialog 这将打开一个用于添加新集群节点的对话框,其中包含以下字段:
    • 主机名:该主机的主机名或IP地址
      • User name: The username for this host
      • Thread Limit: Allow up to this many processes to be scheduled on this host. If set to 0, this defaults to the number of available cores.
      • Remote Fiji Root: The folder containing fiji or ImageJ on this host.
      • Remote File Root: The shared network folder relative to this host.
      • Shell: SSH Shell or Insecure Socket Shell
      • keyfile: Your ssh keyfile, as generated in Linux by ssh-keygen
      • executable: either fiji or ImageJ
      • ssh-port: the ssh port for this host
  • 单击“确定”
  • 添加完所有节点后,单击“确定” #####通过键盘

客户端节点也可以在本地启动,即通过走到它们并使用键盘和鼠标(或脚本)来启动。这需要不安全的设备连接,并且不建议在不受信任的网络上使用。

在根节点上,启动集群后,单击启动不安全服务器按钮。

在客户端节点上:

  • 开始斐济
  • 从 ImageJ 窗口中选择 PluginsClusterAttach to Cluster…
  • 输入根节点的主机名和端口
  • 单击“确定”

  • 运行./fiji --full-classpath --main-class edu.utexas.clm.archipelago.Fiji_Archipelago root.node.hostname port

默认端口为4012。

跨国集群上的配置

Archipelago 可以在操作集群上运行,例如运行 SLURM 或 qsub 的集群,通过编写脚本创建 .arc 配置文件并将其作为参数提交给 Fiji 或 ImageJ 执行文件。 Cluster_SIFT显示了如何在 TACC stampede 的 vnc 队列上完成此操作。

保存

单击“保存到配置文件…”按钮添加当前配置保存到xml文件以供以后使用。这将保存根节点配置以及“配置集群节点…”对话框中显示的任何节点。这不包括任何已停止或崩溃的节点。

####加载中

单击“加载配置文件…”按钮加载现有配置文件。这将自动配置根节点和文件中指示的任何客户端节点。之后集群应该可以立即启动。

启动集群

单击启动集群按钮。当集群运行时,该按钮将立即“停止集群”。单击后,集群和所有正在运行的客户端节点将停止。

启动服务器

要允许“志愿者节点”连接,请单击“且启动不安全服务器”按钮。这会在默认端口 4012 上启动服务器。该设备不安全未加密,因此可能会带来安全风险。

####显示节点统计信息 Fiji Archipelago node statistics dialog 单击“显示节点统计信息”按钮将打开一个对话框,其中显示正在运行的客户端节点的使用情况统计信息:

  • 主持人:相关客户端节点的主机名
  • state:节点的状态,活动、非活动或停止。
  • n 作业:k/n,其中n个可用核心有k个正在运行的进程。
  • Beat:客户端节点大约向根节点发送一次心跳消息。这表示自上次接收心跳以来的时间长度。
  • MB 已使用:斐济 JVM 在客户端节点上使用的 RAM 兆字节数。
  • MB 总计:远程 JVM 可用的 RAM 兆字节数。
  • 停止:单击此按钮可关闭客户端节点。任何正在运行的进程一旦可用,都将被重新安排在其他节点上。

调试输出

如果您想在命令行上显示调试输出,请选中此组件。这可能很冗长,但如果您的集群行为错误,应该包含有用的信息。

开拓者

Cluster 类通过 Cluster.getService(n) 提供ExecutorServices。参数 n 可以是 int 或 float。如果是 int,则预设给 ExecutorService 的任何进程都需要 n 个核心。如果是浮点数,则预设给定计算机的任何可用资源的一部分 n。对于大多数使用情况,Cluster.getCluster().getService(1) 将返回所需的服务。

为了完成这项工作,对集群的工作会被任何序列化并传输到斐济的远程实例。返回的结果被远程序列化,然后由根节点搜索。提交的 Callable 或 Runnable 都必须实现 Serialized。如果不这样做,就会导致运行时出现 NotSerializedException。序列化的一个后果是对象的核心性没有被保留。换句话说,旨在返回在提交之前实例化的对象的 Callable 将有效地返回一个克隆。

虽然单个根节点上可能存在大量集群,但只有一个是“官方的”。该实例由 Cluster.getCluster() 引用。 Cluster.activeCluster() 指示是否存在活动集群。

可以在example中找到一个例子。可以在Equality_Example中找到一个证明深度相等被破坏的例子