Modification Of UWS 1 to 1.1
Petr Skoda
skoda at sunstel.asu.cas.cz
Mon Oct 17 11:15:07 PDT 2011
Hi Pierre,
I am sorry I could not answer earlier but still just in time before
Thursday's UWS session...
> I try to reply point by point
> UWS is the language to manage job in asynchronous way at distance, we are
> clear that we define how to interface UWS service.
I think the UWS is not a language (like JDL - which is already a part of
implementation and as said in 1.3. the "change of JDL changes the
service contract) - I feel the suggested Prarameter Description language
as presented by Carlo Zwolf, Franck le Petit and Paul Harrison
http://www.ivoa.net/internal/IVOA/InterOpOct2011Theory/PDL_2011.10.17.pdf
(I am following the Interop despite not being there;-)
is such a JDL (in fact the parameter description)
> We want it to be simple just to simplify his implementation.
It is your wish to make your life simple - but in situation that something
has to be a global recommendation to solve the requirements of most of
community, the things are never simple (I know the situation with "Simple"
Spectra Access ;-)) and Generic data sets ...
>> creation of new job and run together.
> From my point of view. The management of : witch job has to be sent in
> parallel, what is the available RAM, what is the processors speed is not the
> user problem.
I am afraid you are watching the situation as an informatician but not as
a scientist. The wise scientist knows quite well his needs and makes
decisions to optimize the time when he gets PROPER results. It was even
more critical when the mainframe has limited amount of quick (fast)
queues and long-run ones with different memory and CPU time limits -
I am sure that this has to be eventually put in UWS somehow as well.
> He has to send job. He can send many of them, he don't have to know if other
> users send job at the same time. This is an infrastructure problem manage by
> the provider that can have many kind of cluster, scheduler, batch queue.
Yes - the direct management of computation (how many nodes, which type,
what size of memory...) has to be enforced by the manager of the
infrastructure after investigation of typical requirements of users,
avarage job size and run time etc .....
But as I tried to explain (probably not well ;-) our (i.e. my view as your
oponent and my colleagues behind VO-KOREL) understanding of UWS idea is :
UWS defines the way how the asynchronous service (and stateful,
job-oriented) can be implemented without any intention to restrict its
usage to particular service contract or without any limits of possible
implementation. UWS is a PATTERN or RECIPE HOW to arrange things
Your idea about its usage its already very concrete:
The user has a ANONYMOUS grid where he submits UNRESTRICTED number of
ARBITRARILY large jobs and it is a task of a scheduler to process all of
them accordingly to policy and rules implemented by data provider.
> Usually the scheduler send this job on the available CPU using the knowledge
> of the ram, the number of CPU and the time reserve for execution.
> This is how it work on every cluster.
Well its a further part of system - the real execution (i.e allocating
RAM and executing the binary on given node) - see below:
> Don't reinvent the scheduler, job are on queue and with you mobile you can
> see the status of all your job if you have a web interface to see so.
Its not about the scheduler - its about my knowledge an experience
>> There is yet no dédicated space to the user out of VOSpace.
In current VO services - we are providing this space. But I do not see the
reason why to use VOSPACE if things are stored on given URL. VOSPACE is
for exchange of data between services.
> So Input parameters are anyway destroyed after the job.
In your case yes, in our we have user space and files where it is stored.
I think we are talking about different parts of "job run" - see below
> But you tell me that you want intermediate result from a job you decided to
> stop.
> we have to think about that and reintroduce abort if it's necessary.
It is allowed by UWS and we need it (imagine the log file with progress of
convergence of some model)
If it is aborted manually (I am impatient) or by exceeding the allowed
CPU time (in given queue) or the timeout by Exec Duration, the results may
still be very usefull telling that the job is almost done but the user was
just optimistic to give small tollerance in convergence - but it may as
well tell you this is nonsense - it does not converge with such a set of
params ..... or it is oscillating ...
> User will not talk UWS, he will have an interface and will play with it
> we only describe exchange message between this interface and the server.
Exactly
> we have to define all the possible user requirement in this exchange message.
YES - the requirement of user interface is :
I want to upload large data (set of spectra) and initial parameters to my
REMOTE USER SPACE for several experiements and after getting results I can
decide to modify parameters and rerun the job with the same data or run
another experiment already PENDING.
> I don't see where the lowering comfort is. But I am open to any extension if
> our proposition does not fulfil the requirement.
if you want remove PENDING and excute immediately after the job creation,
then you break the requirements given above. If not, then I am sorry for
misunderstanding....
>>> We have remove pending phase as describe before. Job can be on
>>> | suspended phase, but it's only server action.
> We are only try to make the standard more clear by defining message sent
> back from every actions and limiting the number of method to do the same
> action to limit ambiguity not comfort. Then implementation will be
> easier and more efficient.
Nothing against easier and more readable and clear formulations. But you
have to conserve the functionality .....
>
>>
>>> | We have removed some useless messages on our point of view like abort |
>>> from the user. Because it make the same thing as delete as you can
>>> | not retrieve the result as explain in 1.0 version.
>>
>> I do not understand why you could not retrieve results after abort -
>> and it does not do the same:
>> As we understand it - the DELETING means removing all remnants of the job -
>> including the results.
> Yes
>>
> As I say before
> We have to face the problem of intermediate result
The people do not like the blind running of a code - they like some
intermediate results to be produced to check the progress of a job (of
course sometimes it may not be easy as the system cannot transfer from
given node to output node of a cluster - howver some distributed file
systems try to do this anyway ...
> But not to substitute ourselves to the job manager.
The user has to be his jobs manager ;-)
But he has to have the interface allowing him to control the jobs ...
> Otherwise when there is multiple user and multiple CPU, it become
> unmanageable. It's not the purpose of UWS, it's provider internal business.
Well in every OS the user has a right to kill HIS jobs if something is
going wrong. It would be very dumb to allow the user to execute many jobs
(and let the machine go to knees) just to play with different parameter
sets as he wants to get some results without more advanced thinking about
the nature of a problem
(its a experience with VO-KOREL there is a lot of
parameters and as you know the global optimization task requires some
problem knowledge to restrict yourself to the critical parameters to
converge and to given range of probable solutions --- this is well
understood by users, nevertheless they try to put the burden of decision
on "dumb" computer if having enough freedom - then they run hundreds of
jobs in parallel day and night not to let the machine to idle ;-)
So user in restricted environment (e.g. limited CPU, memory etc) will have
to decide what jobs to run and while computing, he may discover another
idea to get a solution faster. Then he naturalely decides to abort the job
and run another.
The same concerns the PENDING state - he might prepare it but still waits
for results or error on currently running.
>> Especially the isolation of individual users to see only their own jobs,
> This can be done only if we identify user.
Well in non anonymous environment you have clear identification of user
(he has somehow to authenticate)
In anonymous you should probably to arrange somehow some temporary ID.
But as UWS is Stateful -you have to remember the state (and user) to be
able to identify him again after re-connection.
in 2.1.8 (added in UWS 1.0) is defined the Owner but only in case of
authenticated service. I think it is not forbiddent to use this object
even for anonymous service using some other means of users' identification
Here I am not sure about how to impose the rule of STATEFULNESS for
anonymous user - it was not our case ...
in principle knowing the job id anybody could get someone's results after
completion - probably not wanted by most of community.
> If we want to define the mechanism of identification, then we propose to use
> HTTP authentication mechanism that is an RFC
This is what we are doing as well ...
>> As i said we are probably doing something revolutionary with UWS and so our
>> interpretation may be wrong (I hope Paul and Dave will comment on their
>> primary ideas of UWS - but I liked the original design as very flexible)
I am explaining below what I think is different in my vision and yours
> But you know better the code than the user. So you are able to make an
> initial estimation of time duration.
NO - in certain cases it depends on parameters - and its almost
unpredictable - in case of multiparametric optimization.
Of course if you just run image processing you can scale easily the job
time using the size of image as parameter.
I am afraid it is a special case, however.
> The queue priority depend on the resource you ask. You can not have the same
> priority for a quick job mono processor and a multi processor job that use
> all the memory of the machine and run on 200h.
Exactly - that's why I think the user has to be provided with different
queues and there should be some UWS parameter hinting the UWS service to
which one should be the job submitted. Then this "crystal ball number" may
be replaced with the default time limit of given queue - but it is still
difficult as usually the CPU time not the wall time is used in queue
policies....
> So if you say my job is a 5mn job, then I change my mind it will use 200h.
YES -- I can ABORT all my jobs to get into the limits allowing me to use
the long-term queue - depends on job management policy an my status (be
allowed to use more memory, CPU time etc ...)
> It's not acceptable for the other users and it brake all the mechanism of the
> job queue that decide the job scheduling process.
User should have the freedom to decide what he wants if being allowed to
do it. If you remove the ABORT there is no way how to stop wrongly
prepared job , If you replace it with DELETE then all the effort is lost,
while in ABORT case the user could check the results produced so far (to
recognize the problem diverges and so he has to think more about the
physical nature and reformulate the problem)
> In UWS you ask a service the way to query them and retrieve result. From
> this information you are able to make a client that send job and
> retrieve results. But we didn't give any recommendation on web
> interface.
It was the original objection of Mathew as well - UWS is for running
automatic submission - mainly for TAP. It was not originally intended for
running browser interaction.
As I said we tried to find another (more fancy for scientists - I have
asked many of them) application of UWS (as it is a general pattern without
restriction). But so far I do not see any reason why only the blind
automatic execution of jobs should be the official way, if different idea
can fit well with current standard.
> Our purpose is not to reduce functionality, but just to remove ambiguity.
This is philosophical retorics ;-)
You are reducing the functionality as you do not allow me to prepare job
without run and you removed my right to deside about its fate (STOPING it)
The ambiguity is often only apparent - tiny differences may have crucial
consequences (see the arbitrary EULA ;-)
> If you can send a job from 3 different manner, it mean that people
> implementing server side will have to face choice usually not clear
> it mean that client must implement the 3 manner
> it meant that the description of the service have to face a description of 3
> maners.
can you exactly describe which 3 means of starting you have in mind ?
The job must be CREATED by uploading of parameters. And as it said in
2.2.3.1 you may add the job control parameter telling PHASE=RUN, so the
jobs is run immediately - so all your services may define in parameter
sets this implicitly (but I would still let to user to check this option
in input form or add it to the client string etc ...)
If you remove the PENDING phase you restrict the user's freedom.
Its a key issue - you are forcing anybody to accept your solution as you
feel currently powerful enough to dictate others your particular solution.
And what with the poor older services having PENDING, ABORT etc - it looks
like the MS or Oracle policy - drop all what is workig as we decided to
make you happy with our new version which is the only one we support.
(sorry nothing personally against your group - I am sure you wanted to
make more developers happy without seeing the consequences)
But OTOH I feel this is the crucial point of misunderstanding between VO
developers and potential VO users and probably one of the reasons why the
VO interest ist diminishing in wide astronomical community (e.g. seen
in state of VO affairs in ESO ).
The developers want to enforce the astronomers to accept their
simply-to-implement and conceptionally clean solution of VO application
or service while the scientists want to have something different which is
however harder to implement or not obvious to developer.
All the IVOA rules tried to maintain the back compatibility and most of
standards were extended to employ new features, never cut in funcionality!
> I just say, give me a good reason to create a job and not sending it. Why if
> you create a job you don't want to send it.
Probably the concepts we are talking about is different -
Our solution as I said is a CLOUD -like - so the user has some private
space allocated where he can upload the data+parameters. He can use this
space as he needs within certain limits.
If he uploads a lot of data, the disk quota system stops him to create new
jobs (so he has to decide what to remove - i.e. data, input parameters and
results) - this is what I understand the DELETE operation.
By CREATE of job I mean - allocation of this private space where the data
and parameters are uploaded - this is what I call PENDING - after the
PHASE=RUN is this volume sent by some scheduler to particular machine for
execution or submitted to some queue - here it comes the private policy of
the scheduler to power - the state is QUEUED.
Then the particular node may be given the processing code and data and he
runs it (maybe I am wrong but in cluster or grid the code is not on a node
but it is uploaded there by the scheduling node from user's space .
So here the UWS should decide what numerical code to run (it knows he
service URL) and this should be sent with user's data wrapped somehow for
deployment).
In other words - there is a UWS server that has to handle user's space
where the data and params are uploaded. There must be some server
containing the binaries of code of all supported services and there is a
entry point (schedulling node) of grid or cluster which does not care
about UWS but gets a binary of given service, parameters and data of user
and according to his scheduler decides on which node to run it.
You may have a networked (clustered filesystem) and homogenized cluser and
then all the binaries are same and only the name of binary code is sent in
some job descritpion language to given node referring to shared user's
space where the data and params were stored.
He can run limited number of parallel jobs (we are thinking about some
policy of different memory requirement, time limits etc even if this a
task of scheduler - but the user has to have some options like you can run
5 short low memory jobs - other will be queued or one large for longer
time memory)
Even if we do not let him decide we can let the scheduler decide but
then some queue classes must be defined and he must decide how to run the
job.
Even in case of such a TAP application the user may want to query whole
universe ;-) (large amount of data expected in large cone, larger range of
magnitudes etc ....) but it may take long time - or he decides to restrict
the query and wants to have results quickly ....
> And why you are not able to wait
> until the time you are ready to send directly the job without going to this
> pending status.
As I tried to explain above - the user in our case have the allocated
storage on our servers which can use for long time directly - there is a
storage of this experiments, comments, results, graphs etc ...
Its a CLOUD concept which is extremely comfortable for users like the
eshop - all my purchases are there so I can re-order again the same goods
- well its a different ;-) but here I can see the improvements in
parameters on the same data and re-execute the jobs with the same data
(already uploaded - may be large - in my space) and changed parameters
(one number modified from my mobile ;-)
Of course in case I re-submit the same job (i.e. I take the same
data-sets, same parameters, allow to edit the parameters) I do not force
PENDING phase - as I suppose I want to see results of my modified job (or
even the same - as the server version of the binary may be upgraded)
immediately.
So once again - creating jobs means uploading large data + params to
server user's space.
But then I can use this space to run the same job with small change in
parameters without need of uploading all the data again.
I agree this is a particular case but in general it may be extended to
concept of workflows - the data (e.g. processing of image mosaic will take
time to upload) but then I may play with workflow description from mobile
and check the quality of solution (mostly not the image itself but some
quality plot, statistics etc ...)
Probably you should ask users of your services wheteher they would like to
have history of their jobs without need uf re-uploading it always.
There are still slow networks in hotels, or using GPRS etc ....
What we are allowing the users is a "supercomputing" on my phone
And I am pretty sure this will be required soon by all astronomers
to have in VO - as the mobility freedom is increasing - tablets etc ..
There will have to be the proper model for VO to provide such cloud
services - instead of running Aladin of large computer (lot of memory for
Java etc ..) the simple browser will connect Aladin in cloud to see the
DSS and 2MASS thumbnail of region where the supernova has just exploded.
The same in theory case.
To summarize for further consideration in GWS session - I do not support
your idea of removing PENDING, ABORT etc ...
I think the critical issue is the solution of jobs isolation -
authentication and some users's identification for open (public) services
(e.g. cookie's ). The new version of UWS should include somehow the
parameter description language and will need some concept of queue
priorities.
I would even appreciate the another phase ;-)
the STOPED as logical extension of ABORT -
stop executing, free processor, allow the user to see the results for
short time and decide if ABORT or CONTINUE - the state is same as in
SUSPENDED but the system does not run it again if troubles (e.g. memory
limit) are gone but the user has to put it in EXECUTING state
intentionally. Of course it will be harder to implement in GRID
environment but I am sure modern systems will alow this (something like
checkpoint storage, unswapped job etc ...)
The user can already run long job and he is not allowed to run another but
he may want to stop the execution to get resources, run the quicker one
and then continue (for another month ;-) to compute again ...
Of course the crucial question is what happens with computing node - is it
a temporary stop for several minutes where the process is just swapped out
(and will be killed later) or kind of checkpoint where all the space of
running jobs is stored in some user space from what it can be recalled
after weeks etc ....
I am not experienced in such a technologies on clusters, but it may be
even some special feature of application binary that allows to store the
intermediate results of long computation and the newly executed job may be
given the parameter to continue after re-reading such a state (something
like the SAVE in IDL or Save session in most unix applications ...)
To be honest I dislike the idea of automatic Destruction Time removing my
results shortly after being computed. I would first decide the user to
decide what he wants to maintain withing limited space (not to remove jobs
older e.g. than 2 month and keep current as the older onec may be
important well represnenting some solution of my problem that I still want
to work on, but the current are results of multiple demos of some silly
experiment.
But if the destrution Time is long enough (e.g. month or more) then the
idea in last paragraph of 2.2.3.3 is nice (if quota exceeded, further jobs
are stored only shorter times - if the user is warned about this, he will
be carefull not to loose fancy new results ;-)
And I like the 4.3 - the idea of CEA v2 very much.
Best regards,
Petr
*************************************************************************
* Petr Skoda Phone : +420-323-649201, ext. 361 *
* Stellar Department +420-323-620361 *
* Astronomical Institute AS CR Fax : +420-323-620250 *
* 251 65 Ondrejov e-mail: skoda at sunstel.asu.cas.cz *
* Czech Republic *
*************************************************************************
More information about the grid
mailing list