Which support functionality should the LarKC platform offer?

mailto:Frank.van.Harmelen@cs.vu.nl , mailto:Annette@cs.vu.nl

Abstract

This is an attempt to give some structure to the discussion which support-functionality to include in the larkc platform, and which ones to leave to individual plugin. No hard choices are made, but many options are laid out (hopefully in a structured manner).

Request for comments:

Incentive Principles

According to D1.2.1 there are three phases of use of LarKC:

What are the incentives for each of these three types of users to use LarKC? These incentives should determine the answers to the above questions on which functionality the LarKC platform should provide, and what we can leave up to the individual users of the various types.

Each "support feature" of LarKC should be justified by at least one of the following goals:

  1. For plugin writers:
    • Make writing of plugins easier/more attractive
  2. For configuration designers:
    • Make combining plugins for a specific task easier/more attractive
  3. For end-users
    • Make it more attractive to execute queries using a particular plugin configuration

Candidates for platform support

The following candidates have been discussed in the past as items for which the LarKC platform should provide built-in support:

We must determine which of these features provide incentives to which of the three user-groups: for plugin-writers to deploy their code on LarKC (type [1]), for configuration designers to use LarKC (type [2]), and for endi users to deploy LarKC in their application: LarKC support features must only be included if they score on at least one of [1,2,3].

Incentives for the candidates

Our attempt at scoring the above features on incentives is as follows:

FEATURE

INCENTIVE-GROUP

interoperability

1,2

parallel

1,2,3

distributed

2,3, [HLRS] Also it is incentive for 1, as they have the possibility to expose their plug-in remotely to other LarKC users. It also allows plug-in writers to develop and integrate remotely plug-ins running on concrete resources (such as a cluster), which cannot be executed somewhere else.

data access

1,2

data caching

2,3

computing resources

1,2,3

anytime behaviour

3

plugin registration

1,2

instrumentation

1,2

code library

1,2

TODO: We will also need to decide how much of this is already present in the Y1 public release

Candidates for platform support in more detail

We will now discuss each of the above features in some more detail.

plugin interoperability

support for parallel execution ("inside a plugin")

support for distributed/remote execution ("between the plugins" '''[HLRS]''' or “between independent instances of the same plugin”)

[HLRS]

As soon as you have independent pieces to be executed you can think of running them somewhere remote. The functionality of the platform then would be:

Moving date or executables around means:

Before really doing that, the platform should have some knowledge about performance of the network (how long will it take to have the data there and get them back) as well as of the execution (how long does it take from submitting a job until obtaining results) and characteristics of the workflow (how often do I have to do that) to decide whether it make sense to distribute or not.

[/HLRS]

[VUA]

Indeed, it would seem to us that the above description by HLRS corresponds closely to what we believe to be called "task farming". We want to propose this as the most promising parallisation model for LarKC (at least concerning parallelisation between the plugins): tasks that are generated by plugins are moved to processors based on information about the availability, load, capability, closeness-to-the-data etc of the processors. These can be tasks generated by the DECIDEr (ie entire plugins) or task generated inside a plugin (e.g. because the plugin-writer wrote the plugin this way). We would propose that such task-farming can be implemented using an existing task-farming platform (e.g. BOINC and IBIS are both such platforms, geared towards different compute-environments).

The more simple "parallel pipeline" approach (where each plugin has been allocated to a single (fixed) machine), can be done as a special case of task farming.

Also, the case where a plugin is just a wrapper around a call to an external service (e.g. the current Sindice-IDENTIFY) can be done as a special case (by farming out just a wrapper that makes the service-call); (of course the farming is then not really useful). Such "wrapper-for-webservice-calls" plugins must be done if code is only remotely accessible, can only be done if data-transport is small. Instead, farming is useful if significant work must be done on large amounts of local data, e.g. in a cluster-environment.

We can distinghuis black-box farming (the allocated tasks are indivisible and not inspectable) vs white-box farming (the platform inspects the task and tries to split it up and farm it out). In both cases, parallelisation inside the plugin can still be done: in white-box the platform tries to split-up the task and farm it out, in the black box the plugin-writer must do the splitting-up himself, but he can farm the subtasks back out to the farming system (the same farming system that was used to allocate his own task to himself).

[/VUA]

Notes

  1. above two items on parallel (intra-plugin) and distributed (inter-plugin) execution written using also material from D5.1
  2. these two "shopping lists" (to support parallel and distributed execution by existing platforms) should be extended and made more detailed, then we should make choices. We should be using an existing solution for both of the above, not develop something new.
  3. the choices among the above are influenced by (among others) volumes of data that must/must-not be transported, and the frequency of remote calls. By which others? [HLRS] Dependency / independency of operations within / between plugins

  4. choice for/against any of these paradigms also restricts the kind of hardware on which LarKC can run efficiently (SMP,DMP, hybrid, high/low bandwidth, etc, see D5.1)
  5. Each of these come with requirements for the data-layer, how does the current data-model fit with these requirements?
  6. cloud-computing is not included in any of these lists since it is a model of how to *obtain* computing resources, not about how to program them once you have obtained them.

data-access

data caching

This concerns support to avoid repeated remote access of the same data, as well as predicting which data will have to be accessed next, and moving this data closer to the computation ((data-warming/cooling)

The platform could support the run-time trade-off between different options

access to computing resources

Will the LarKC consortium make give access to large computing resources?

[HLRS] compute ressource + storage:

[/HLRS]

support for anytime behaviour

It should be easy to take a non-anytime algorithm and deploy it as an anytime plugin with no/little additional effort, e.g. because of pre-configured decide-components, pipeline-support for datastreams, etc.

Andy Seaborne (HP Labs) made the case that current SPARQL + existing technologies can already be used to get much of stream-output from a SPARQL endpoint. His comments are included here, with his permission.

plugin registration & discovery

monitoring/instrumentation/measurement on behaviour of plugins

Note: would using ?NetKernel for the platform enable some of this?

Note: this is important for the role of LarKC as an experimentation platform [HLRS] This information can be used to feed the plug-in non-functional properties in order to have a more accurate description

library of support-code for plugin builders & plugin deployers

Possibilities are (non-exhaustive):

Discussion

Why is LarKC innovative?

Another way of deciding on which features to support would have been to look at the promises we made on innovation. The following table shows the keywords we promised, and how they are covered by the support features discussed above:

PROMISE

FULFILLMENT ;)

Cyc

heterogenous

interoperability

Removal modules to access external systems

scalable

parallel, distributed, anytime, computing resources, caching

Caching, Threading, Anytime behavior

incomplete

anytime

Anytime behavior, microtheories

distributed

distributed

/

experimental platform

instrumentation

/

for the web (integrated/interlinked, remote data etc.)

distributed, data access, interoperability

Remote data through removal modules, web interface and API, ?OpenCyc

(open) extensible

interoperability, data access,

Extensible through removal modules

publically accessible

plugin registration, computing resources

?OpenCyc, ?ResearchCyc

Comparison with other platforms

This table of promises and features could also be the basis for comparing LarKC with other available platforms, such as Virtuoso, Cyc, etc.

How do we fulfill the "large scale" promise?

Does scalability come from platform-support (= the above features) or from plugin-cleverness? Or both? [HLRS] BOTH!!

LarkcProject/WP5/SupportFeatures (last edited 2009-04-26 20:08:17 by FrankVanHarmelen)