4REAL presentation

This commit is contained in:
Filip Gralinski 2016-05-17 14:55:03 +02:00
parent 92fcae3d12
commit 14005932ce
5 changed files with 165 additions and 20 deletions

View File

@ -13,17 +13,39 @@ import Text.Hamlet (hamletFile)
sampleChallengeName :: Text sampleChallengeName :: Text
sampleChallengeName = "petite-difference-challenge" sampleChallengeName = "petite-difference-challenge"
sampleChallengeName' :: Text
sampleChallengeName' = "retroc"
sampleUserIdent :: Text
sampleUserIdent = "ptlen@ceti.pl"
getPresentation4RealR :: Handler Html getPresentation4RealR :: Handler Html
getPresentation4RealR = do getPresentation4RealR = do
readme <- challengeReadme sampleChallengeName readme <- challengeReadme sampleChallengeName
(Entity challengeId challenge) <- runDB $ getBy404 $ UniqueName sampleChallengeName challengeEnt@(Entity challengeId challenge) <- runDB $ getBy404 $ UniqueName sampleChallengeName
Just repo <- runDB $ get $ challengePublicRepo challenge
(test, leaderboard) <- getLeaderboardEntries challengeId (Just (Entity sampleUserId _)) <- runDB $ getBy $ UniqueUser sampleUserIdent
let leaderboardWithRanks = zip [1..] leaderboard let condition = (\(Entity _ submission) -> (submissionSubmitter submission == sampleUserId))
(evaluationMaps', tests) <- getChallengeSubmissionInfos condition challengeId
let evaluationMaps = take 10 evaluationMaps'
sampleLeaderboard <- getSampleLeaderboard sampleChallengeName
sampleLeaderboard' <- getSampleLeaderboard sampleChallengeName'
presentationLayout $(widgetFile "presentation-4real") presentationLayout $(widgetFile "presentation-4real")
getSampleLeaderboard name = do
challengeEnt@(Entity challengeId challenge) <- runDB $ getBy404 $ UniqueName sampleChallengeName
Just repo <- runDB $ get $ challengePublicRepo challenge
(test, leaderboard) <- getLeaderboardEntries challengeId
let leaderboardWithRanks = zip [1..] (take 10 leaderboard)
return $ Table.buildBootstrap (leaderboardTable Nothing (challengeName challenge) test) leaderboardWithRanks
presentationLayout widget = do presentationLayout widget = do
master <- getYesod master <- getYesod
mmsg <- getMessage mmsg <- getMessage

View File

@ -59,6 +59,10 @@ h2 {
font-weight: bold; font-weight: bold;
} }
ul {
padding-bottom: 10px;
}
/* HTML5 display-role reset for older browsers */ /* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section { footer, header, hgroup, menu, nav, section {
@ -704,3 +708,7 @@ a:focus {
Thanks for reading. I hope you enjoyed it at least as much as I enjoyed writing it Thanks for reading. I hope you enjoyed it at least as much as I enjoyed writing it
for you. for you.
*/ */
.readme {
line-height: 130%;
}

View File

@ -1,20 +1,23 @@
<div id="title" class="step slide" data-x="0" data-y="-1500"> <script src="/static/js/sigma.min.js">
<h2>Gonito.net <script src="/static/js/sigma.parsers.json.min.js">
<p>open platform for research competition, cooperation and reproducibility
<p>Filip Graliński, Rafał Jaworski, Łukasz Borchmann, Piotr Wierzchoń
<p>LREC 2016 / 4REAL Workshop
<div class="step slide" data-x="0" data-y="0"> <div id="title" class="step" data-x="0" data-y="-1500">
<h1>Gonito.net
<p>open platform for research competition, cooperation and reproducibility
<p class="footnote">Filip Graliński, Rafał Jaworski,<br/>Łukasz Borchmann, Piotr Wierzchoń
<p class="footnote">LREC 2016 / 4REAL Workshop
<div class="step slide" data-x="0" data-y="-500">
<h2>Motivation <h2>Motivation
<ul> <ul>
<li>We needed a place to keep track of our results for <li>We needed a place to keep track of our results for:
<ul> <ul>
<li>our research <li>our research
<li>teaching our students <li>teaching our students
<li>just playing with our data sets <li>just playing with our data sets
<li>(but didn't want to save the world and earn $$$) <li>(but didn't want to save the world and earn $$$)
<div class="step slide" data-x="0" data-y="1500"> <div class="step slide" data-x="0" data-y="500">
<h2>Alternatives? <h2>Alternatives?
<ul> <ul>
<li><a href="https://www.kaggle.com">Kaggle</a> <li><a href="https://www.kaggle.com">Kaggle</a>
@ -27,11 +30,11 @@
<li>more or less similar to Kaggle</li> <li>more or less similar to Kaggle</li>
<li><a href="https://codalab.org">CodaLab</a> <li><a href="https://codalab.org">CodaLab</a>
<ul> <ul>
<li>trying hard but hadn't found it ☹
<li>open! <li>open!
<li>trying hard but didn't find it ☹
<li>no git <li>no git
<div class="step slide" data-x="1000" data-y="1500"> <div class="step slide" data-x="1000" data-y="500">
<p>That's why we created <p>That's why we created
<h1>Gonito.net <h1>Gonito.net
<p>open platform for machine learning competition <p>open platform for machine learning competition
@ -49,7 +52,7 @@
<li>Solutions can be forked and reused <li>Solutions can be forked and reused
<li>Even if a Gonito.net ceases to exist, Git repos may live <li>Even if a Gonito.net ceases to exist, Git repos may live
<div class="step slide" data-x="2000" data-y="1500"> <div class="step slide" data-x="2000" data-y="500">
<p>… and <p>… and
<h1>GEval <h1>GEval
<p>companion Haskell library and stand-alone tool for machine learning evaluation <p>companion Haskell library and stand-alone tool for machine learning evaluation
@ -59,13 +62,115 @@
<li>BLEU <li>BLEU
<li>… more to come <li>… more to come
<div class="step slide" data-x="1000" data-y="3000"> <div class="step slide" style="height: 800px;" data-x="1000" data-y="1500">
<h2>A challenge… <h2>A challenge…
<div style="font-size: 50%"> <div style="font-size: 50%" class="readme">
^{readme} ^{readme}
<div class="step slide" data-x="1000" data-y="4000"> <div class="step slide" data-x="2000" data-y="2000">
<h2>Install GEval
<pre>
git clone git://gonito.net/geval
cd geval
stack setup
stack install
# add ~/.local/bin to $PATH
<div class="step slide" style="height: 800px;" data-x="1000" data-y="2500">
<h2>Current status… <h2>Current status…
<div style="font-size: 50%"> <div style="font-size: 50%">
^{Table.buildBootstrap (leaderboardTable Nothing (challengeName challenge) test) leaderboardWithRanks} ^{sampleLeaderboard}
<div class="step slide" data-x="2000" data-y="3000">
<h2>How to replicate the best result?
<ul>
<li>Let's assume you know Git commit hash
<ul>
<li>(e.g. you found it in the paper)
<li>see the submission number at http://gonito.net/q/db43f2
<pre>
git clone git://gonito.net/petite-difference-challenge -b submission-00115
cd petite-difference-challenge
make clean
make
geval --test-name dev-0
<div class="step slide" data-x="2000" data-y="4000">
<h2>I wanna do something better
<p>Sign up, add SSH key etc.
<p>Clone the repo:
<pre>
git clone ssh://gitolite@gonito.net/john/petite-difference-challenge
cd petite-difference-challenge
git pull ssh://gitolite@gonito.net/petite-difference-challenge
git push origin master
cd petite-difference-challenge
<p>Work on your solution and check locally:
<pre>
geval --test-name dev-0
<p>Push your brilliant solution:
<pre>
git add dev-0/out.tsv test-A/out.tsv # ...
git commit -m 'my brilliant solution'
git push origin master
<p>… and let Gonito.net know about your submission (or configure a Git hook)
<div class="step slide" style="height: 800px;" data-x="1000" data-y="4500">
<h2>… and see your results
<div style="font-size: 50%">
^{Table.buildBootstrap (submissionsTable Nothing (challengeName challenge) tests) evaluationMaps}
<div class="step slide" data-x="2000" data-y="5000">
<h2>Be open!</h2>
<p>You can open <span class="glyphicon glyphicon-share"></span>&nbsp; your submission so that everybody could see it
<p>… and you fork somebody else's submission <span class="glyphicon glyphicon-folder-open"></span>&nbsp; and build on it
<pre>
git clone ssh://gitolite@gonito.net/john/petite-difference-challenge
cd petite-difference-challenge
git fetch ssh://gitolite@gonito.net/petite-difference-challenge submission-00115
git reset --hard FETCH_HEAD
<div class="step slide" data-x="1000" data-y="5500">
<h2>Who forked and submitted what and when?
<div id="graph-container">
<div class="step slide" style="height: 800px;" data-x="1000" data-y="6500">
<h2>Yet another challenge
<div style="font-size: 50%">
^{sampleLeaderboard'}
<div class="step slide" data-x="0" data-y="7000">
<h2>Future?
<ul>
<li>works for us!
<ul>
<li>as an auxiliary teaching tool
<li>for keeping track of our research
<li>when writing a paper in a team
<li>why not for other people?
<ul>
<li>for organizing shared tasks
<li>for tracking effort of a research community in a longer-term perspective
<li>TODOs
<ul>
<li>Git annex for storing models
<li>?

View File

@ -0,0 +1,6 @@
sigma.parsers.json("@{ChallengeGraphDataR $ challengeName challenge}", {
container: 'graph-container',
settings: {
defaultNodeColor: '#ec5148'
}
});

View File

@ -11,7 +11,11 @@ $newline never
<meta name="viewport" content="width=1024" /> <meta name="viewport" content="width=1024" />
<meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-capable" content="yes" />
<link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" /> <link href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js">
<script src="/static/js/jquery.js" type="text/javascript">
<link href="/static/css/impress-demo.css" rel="stylesheet" /> <link href="/static/css/impress-demo.css" rel="stylesheet" />