docs-site/website/pages/en/index.js (327 lines of code) (raw):
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
/*
Pages: The website/pages directory
contains example top-level pages for the site.
index.js is the landing page
*/
const React = require("react")
const CompLibrary = require("../../core/CompLibrary.js")
const Container = CompLibrary.Container
const MarkdownBlock = CompLibrary.MarkdownBlock
const Showcase = require(`${process.cwd()}/core/Showcase.js`)
// TODO: add <translate> tags
// const translate = require('../../server/translate.js').translate;
//
const iconGr = require("react-icons/gr")
const iconGi = require("react-icons/gi")
const iconBs = require("react-icons/bs")
const iconFa = require("react-icons/fa")
const iconCg = require("react-icons/cg")
const iconIm = require("react-icons/im")
const iconDi = require("react-icons/di")
const siteConfig = require(`${process.cwd()}/siteConfig.js`)
function docUrl(doc, language) {
return siteConfig.baseUrl + "docs/" + (language ? language + "/" : "") + doc
}
function pageUrl(page, language) {
return siteConfig.baseUrl + (language ? language + "/" : "") + page
}
function HomeSplash(props) {
const { siteConfig, language } = props
return (
<div className="index-hero">
{/* Increase the network loading priority of the background image. */}
<img
style={{ display: "none" }}
src={`${siteConfig.baseUrl}img/sg-botanic-coleen-rivas-unsplash.jpg`}
alt="increase priority"
/>
<div className="index-hero-inner">
<img
alt="SINGA-hero-banner"
className="index-hero-logo"
src={`${siteConfig.baseUrl}img/singa.png`}
/>
<h1 className="index-hero-project-tagline">
A Distributed Deep Learning Library
</h1>
<div className="index-ctas">
<a
className="button index-ctas-get-started-button"
href={`${docUrl("installation", language)}`}
>
Get Started
</a>
{/* <span className="index-ctas-github-button">
<iframe
src="https://ghbtns.com/github-btn.html?user=apache&repo=singa&type=star&count=true&size=large"
frameBorder={0}
scrolling={0}
width={160}
height={30}
title="GitHub Stars"
/>
</span> */}
<a
className="github-button" // part of the https://buttons.github.io/buttons.js script in siteConfig.js
href={`https://github.com/apache/singa`}
data-count-href="/apache/singa/stargazers"
data-show-count="true"
data-count-aria-label="# stargazers on GitHub"
data-size="large"
aria-label="Star this project on GitHub"
>
{"Star"}
</a>
</div>
</div>
</div>
)
}
class Index extends React.Component {
render() {
const { config: siteConfig, language = "en" } = this.props
const pinnedUsersToShowcase = siteConfig.users.filter(user => user.pinned)
return (
<div>
<HomeSplash siteConfig={siteConfig} language={language} />
<div className="announcement">
<div className="announcement-inner">
Apache SINGA is an{" "}
<a href="https://blogs.apache.org/foundation/entry/the-apache-software-foundation-announces57">
Apache Top Level Project
</a>
, focusing on distributed training of deep learning and machine
learning models
</div>
</div>
<div className="mainPageContainer">
<Container padding="top, bottom">
<div
style={{
fontWeight: "bold",
textAlign: "left",
fontSize: "35px",
paddingBottom: "10px",
}}
>
Features
</div>
<div className="container-2">
<div className="container-2-box">
<iconGr.GrInstall className="icon" />
<h2>Easy installation</h2>
<p>
<MarkdownBlock>
Easy installation using
[Conda](https://singa.apache.org/docs/installation/#using-conda),
[Pip](https://singa.apache.org/docs/installation/#using-pip),
[Docker](https://singa.apache.org/docs/installation/#using-docker)
and [from
Source](https://singa.apache.org/docs/installation/#from-source)
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconDi.DiDatabase className="icon" />
<h2>Database integration</h2>
<p>
<MarkdownBlock>
Models are trained with SINGA and can be queried in the RDBMS
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconGi.GiMeepleCircle className="icon" />
<h2>Model zoo</h2>
<p>
<MarkdownBlock>
Various domain specific deep learning models, e.g., healthcare and science, are provided in SINGA
repo on
[Github](https://github.com/apache/singa/tree/master/examples)
and on [Google Colab](https://colab.research.google.com/)
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconBs.BsDistributeVertical className="icon" />
<h2>Distributed training</h2>
<p>
<MarkdownBlock>
SINGA supports data parallel training across multiple GPUs
(on a single node or across different nodes)
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconFa.FaCalculator className="icon" />
<h2>Automatic gradient calculation</h2>
<p>
<MarkdownBlock>
SINGA records the [computation
graph](https://singa.apache.org/docs/graph/) and applies the
backward propagation automatically after forward propagation
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconFa.FaMemory className="icon" style={{fontSize: "22px"}}/>
<h2>Memory optimization</h2>
<p>
<MarkdownBlock>
The optimization of memory are implemented in the
[Device](https://singa.apache.org/docs/device/) class
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconGr.GrOptimize className="icon" />
<h2>Parameter optimization</h2>
<p>
<MarkdownBlock>
SINGA supports various popular optimizers including
stochastic gradient descent with momentum, Adam, RMSProp,
and AdaGrad, etc
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconCg.CgArrowsExchangeAlt className="icon" style={{fontSize: "30px"}}/>
<h2>Interoperability</h2>
<p>
<MarkdownBlock>
SINGA supports loading [ONNX](https://onnx.ai/) format
models and saving models defined using SINGA APIs into ONNX
format, which enables AI developers to use models across
different libraries and tools
</MarkdownBlock>
</p>
</div>
<div className="container-2-box">
<iconIm.ImClock className="icon" />
<h2>Time profiling</h2>
<p>
<MarkdownBlock>
SINGA supports the time profiling of each of the operators
buffered in the graph
</MarkdownBlock>
</p>
</div>
</div>
</Container>
<Container padding="top, bottom" background="light">
<p
style={{
textAlign: "center",
fontSize: "24px",
fontWeight: "bold",
}}
>
SINGA has a well architected software stack and easy-to-use Python interface to improve
usability
</p>
<img
style={{ width: "35%" }}
className="containerImg"
src={`${siteConfig.baseUrl}img/singav3-sw.png`}
alt="Usability"
/>
</Container>
<Container padding="top, bottom">
<p
style={{
textAlign: "center",
fontSize: "24px",
fontWeight: "bold",
}}
>
SINGA trains the deep learning models which can be queried as stored procedures of the RDBMS
</p>
<img
style={{ width: "35%" }}
className="containerImg"
src={`${siteConfig.baseUrl}img/MS_fig.jpg`}
alt="DatabaseUse"
/>
</Container>
<Container padding="top, bottom" background="light">
<p
style={{
textAlign: "center",
fontSize: "24px",
fontWeight: "bold",
}}
>
SINGA parallelizes the training and optimizes the communication
cost to improve training scalability
</p>
<img
style={{ width: "27%" }}
className="containerImg"
src={`${siteConfig.baseUrl}img/benchmark.png`}
alt="Scalability"
/>
</Container>
<Container padding="top, bottom">
<p
style={{
textAlign: "center",
fontSize: "24px",
fontWeight: "bold",
}}
>
SINGA builds a computational graph to optimize the training speed
and memory footprint
</p>
<img
style={{ width: "37%" }}
className="containerImg"
src={`${siteConfig.baseUrl}img/GraphOfMLP.png`}
alt="Efficiency"
/>
</Container>
<Container padding={["bottom", "top"]}>
<div
style={{
fontWeight: "bold",
textAlign: "left",
fontSize: "30px",
paddingBottom: "40px",
}}
>
Install SINGA
</div>
<div className="container-3">
<button className="container-3-button">
<a href="https://singa.apache.org/docs/installation/#using-pip">
Using Pip
<span style={{ float: "right" }}>
<iconBs.BsDownload />
</span>
</a>
</button>
<button className="container-3-button">
<a href="https://singa.apache.org/docs/installation/#using-docker">
Using Docker
<span style={{ float: "right" }}>
<iconBs.BsDownload />
</span>
</a>
</button>
<button className="container-3-button">
<a href="https://singa.apache.org/docs/installation/#from-source">
From Source
<span style={{ float: "right" }}>
<iconBs.BsDownload />
</span>
</a>
</button>
</div>
</Container>
<Container>
<div className="productShowcaseSection paddingBottom">
<h2 style={{ color: "#904600" }}>Users of Apache SINGA</h2>
<p>
Apache SINGA powers the following organizations and companies...
</p>
<Showcase users={pinnedUsersToShowcase} />
<div className="more-users">
<a className="button" href={`${pageUrl("users", language)}`}>
All Apache SINGA Users
</a>
</div>
</div>
</Container>
</div>
</div>
)
}
}
module.exports = Index