blob: 17a60cab1b8a8f2749e3c3f8de7ad5a559437dbc [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Chuẩn bị trước khi phát hành · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. --&gt;"/><meta name="docsearch:version" content="4.0.0_Viet"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Chuẩn bị trước khi phát hành · Apache SINGA"/><meta property="og:type" content="website"/><meta property="og:url" content="https://singa.apache.org/"/><meta property="og:description" content="&lt;!--- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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. --&gt;"/><meta property="og:image" content="https://singa.apache.org/img/singa_twitter_banner.jpeg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://singa.apache.org/img/singa_twitter_banner.jpeg"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://singa.apache.org/blog/atom.xml" title="Apache SINGA Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://singa.apache.org/blog/feed.xml" title="Apache SINGA Blog RSS Feed"/><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,700"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Baloo+Paaji+2&amp;family=Source+Sans+Pro:wght@200;300&amp;display=swap"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script src="https://unpkg.com/vanilla-back-to-top@7.1.14/dist/vanilla-back-to-top.min.js"></script><script>
document.addEventListener('DOMContentLoaded', function() {
addBackToTop(
{"zIndex":100}
)
});
</script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>4.0.0_Viet</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/4.0.0_Viet/installation" target="_self">Docs</a></li><li class=""><a href="/docs/4.0.0_Viet/source-repository" target="_self">Community</a></li><li class=""><a href="/blog/" target="_self">News</a></li><li class=""><a href="https://apache-singa.readthedocs.io/en/latest/" target="_self">API</a></li><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li><li class=""><a href="https://github.com/apache/singa" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>Development</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Getting Started</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/installation">Cài đặt</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/software-stack">Software Stack</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/examples">Ví Dụ</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Guides</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/device">Device</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/tensor">Tensor</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/autograd">Autograd</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/optimizer">Optimizer</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/graph">Model</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/onnx">ONNX</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/dist-train">Distributed Training</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/time-profiling">Time Profiling</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Development</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/downloads">Tải SINGA</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/build">Cài đặt SINGA từ Nguồn (Source)</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/contribute-code">Tham gia viết code</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/contribute-docs">Tham gia chỉnh sửa Hướng Dẫn Sử Dụng</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/4.0.0_Viet/how-to-release">Chuẩn bị trước khi phát hành</a></li><li class="navListItem"><a class="navItem" href="/docs/4.0.0_Viet/git-workflow">Quy Trình Sử Dụng Git</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs-site/docs/how-to-release.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Chuẩn bị trước khi phát hành</h1></header><article><div><span><!--- 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. -->
<p>Đây là hướng dẫn chuẩn bị cho việc phát hành
<a href="http://www.apache.org/dev/release-publishing.html">quá trình chuẩn bị trước khi phát hành</a>
SINGA.</p>
<ol>
<li><p>Lựa chọn người quản lý cho việc phát hành. Người quản lý chịu trách nhiệm
điều phối quá trình phát hành. Chữ ký của người quản lý (.asc) sẽ được tải
lên cùng với bản phát hành. Nggười quản lý tạo KEY (RSA 4096-bit) và tải nó
lên public key server. Để được tin cậy kết nối trên web, người quản lý cần
các người dùng Apache khác chứng thực (signed) Key của mình. Anh ta trước
tiên cần yêu cầu mentor giúp chứng thực key.
<a href="http://www.apache.org/dev/release-signing.html">Cách tạo Key</a>?</p></li>
<li><p>Kiểm tra bản quyền.
<a href="https://www.apache.org/legal/src-headers.html#faq-docs">FAQ</a>;
<a href="https://issues.apache.org/jira/projects/SINGA/issues/SINGA-447">Các bản SINGA đã phát hành</a></p>
<ul>
<li>Nền tảng code không bao gồm code của bên thứ 3 mà không tương thích với
APL;</li>
<li>Các chương trình dependencies phải tương thích với APL. Các licenses giống
với GNU là không tương thích;</li>
<li>Các tệp tin nguồn viết bởi chúng tôi PHẢI bao gồm license header của
Apache: <a href="http://www.apache.org/legal/src-headers.html">http://www.apache.org/legal/src-headers.html</a>. Chúng tôi cung cấp
script để chạy header trên tất cả các tệp tin.</li>
<li>Cập nhật tệp tin LICENSE. Nếu code có chứa mã code của một bên thứ 3 trong
bản phát hành mà không phải APL, phải nêu rõ ở phần cuối của tập tin THÔNG
BÁO.</li>
</ul></li>
<li><p>Nâng cấp phiên bản. Kiểm tra mã code và Tài liệu hướng dẫn</p>
<ul>
<li>Quá trình cài đặt không bị lỗi nào.</li>
<li>Bao gồm tests cho những mục nhỏ (nhiều nhất có thể)</li>
<li>Gói chương trình Conda chạy không bị lỗi.</li>
<li>Tài liệu hướng dẫn trực tuyến trên trang web Apache là mới nhất.</li>
</ul></li>
<li><p>Chuẩn bị tệp tin RELEASE_NOTES (Lưu ý phát hành). Bao gồm các mục, Giới
thiệu, Tính năng nổi bật, Lỗi Bugs, (đường dẫn tới JIRA hoặc Github PR),
Những thay đổi, Danh sách thư viện Dependency, Các vấn đề không tương thích.
Làm theo
<a href="http://commons.apache.org/proper/commons-digester/commons-digester-3.0/RELEASE-NOTES.txt">ví dụ</a>.</p></li>
<li><p>Gói các phiên bản phát hành. Bản phát hành cần được gói gọn thành:
apache-singa-VERSION.tar.gz. Trong bản phát hành không nên chứa bất kì tệp
tin dạng binary nào, bao gồm cả các tệp tin git. Tuy nhiên, các tệp CMake
compilation dựa vào git tag để tạo số phiên bản; để bỏ qua dependency này,
bạn cần cập nhật tệp tin CMakeLists.txt theo cách thủ công để tạo số phiên
bản.</p>
<pre><code class="hljs"># xoá các dòng sau
include(GetGitRevisionDescription)
git_describe(VERSION --tags --dirty=-d)
<span class="hljs-type">string</span>(REGEX REPLACE <span class="hljs-string">"^([0-9]+)<span class="hljs-subst">\\</span>..*"</span> <span class="hljs-string">"<span class="hljs-subst">\\</span>1"</span> VERSION_MAJOR <span class="hljs-string">"${VERSION}"</span>)
<span class="hljs-type">string</span>(REGEX REPLACE <span class="hljs-string">"^[0-9]+<span class="hljs-subst">\\</span>.([0-9]+).*"</span> <span class="hljs-string">"<span class="hljs-subst">\\</span>1"</span> VERSION_MINOR <span class="hljs-string">"${VERSION}"</span>)
<span class="hljs-type">string</span>(REGEX REPLACE <span class="hljs-string">"^[0-9]+<span class="hljs-subst">\\</span>.[0-9]+<span class="hljs-subst">\\</span>.([0-9]+).*"</span> <span class="hljs-string">"<span class="hljs-subst">\\</span>1"</span> VERSION_PATCH <span class="hljs-string">"${VERSION}"</span>)
# thay đổi số
SET(PACKAGE_VERSION <span class="hljs-number">3.0</span><span class="hljs-number">.0</span>)
SET(VERSION <span class="hljs-number">3.0</span><span class="hljs-number">.0</span>)
SET(SINGA_MAJOR_VERSION <span class="hljs-number">3</span>) # <span class="hljs-number">0</span> -
SET(SINGA_MINOR_VERSION <span class="hljs-number">0</span>) # <span class="hljs-number">0</span> - <span class="hljs-number">9</span>
SET(SINGA_PATCH_VERSION <span class="hljs-number">0</span>) # <span class="hljs-number">0</span> - <span class="hljs-number">99</span>
</code></pre>
<p>Tải gói chương trình lên
<a href="https://dist.apache.org/repos/dist/dev/singa/">stage repo</a>. Cần bao gồm các
tệp tin tar, signature, KEY và tệp tin SHA256 checksum. Không sử dụng MD5.
Xem chính sách tại
<a href="http://www.apache.org/dev/release-distribution#sigs-and-sums">đây</a>. Thư mục
stage cần bao gồm:</p>
<ul>
<li>apache-singa-VERSION.tar.gz</li>
<li>apache-singa-VERSION.acs</li>
<li>apache-singa-VERSION.SHA256</li>
</ul>
<p>Các lệnh để tạo tệp tin và tải chúng lên stage svn repo:</p>
<pre><code class="hljs css language-sh"><span class="hljs-comment"># trong singa repo</span>
rm -rf .git
rm -rf rafiki/*
<span class="hljs-built_in">cd</span> ..
tar -czvf apache-singa-VERSION.tar.gz singa/
mkdir stage
<span class="hljs-built_in">cd</span> stage
svn co https://dist.apache.org/repos/dist/dev/singa/
<span class="hljs-built_in">cd</span> singa
<span class="hljs-comment"># copy tệp tin KEYS từ singa repo sang thư mục này nếu không có</span>
cp ../../singa/KEYS .
mkdir VERSION
<span class="hljs-comment"># copy tệp tin tar.gz</span>
mv ../../apache-singa-VERSION.tar.gz VERSION/
<span class="hljs-built_in">cd</span> VERSION
sha512sum apache-singa-VERSION.tar.gz &gt; apache-singa-VERSION.tar.gz.sha512
gpg --armor --output apache-singa-VERSION.tar.gz.asc --detach-sig apache-singa-VERSION.tar.gz
<span class="hljs-built_in">cd</span> ..
svn add VERSION
svn commit
</code></pre></li>
</ol>
<ol start="6">
<li><p>Kêu gọi vote bằng cách gửi email. Xem ví dụ dưới đây.</p>
<pre><code class="hljs"><span class="hljs-attribute">To</span>: dev<span class="hljs-variable">@singa</span>.apache.org
<span class="hljs-attribute">Subject</span>: [VOTE] Release apache-singa-X.Y.Z (release candidate N)
Hi all,
I have created a build for Apache SINGA <span class="hljs-number">3.1</span>.<span class="hljs-number">0</span>, release candidate <span class="hljs-number">2</span>.
The release note is at
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//github.com/apache/singa/blob/master/RELEASE_NOTES.</span>
The artifacts to be voted on are located <span class="hljs-attribute">here</span>:
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//dist.apache.org/repos/dist/dev/singa/3.1.0.rc2/apache-singa-3.1.0.rc2.tar.gz</span>
The hashes of the artifacts are as <span class="hljs-attribute">follows</span>:
<span class="hljs-attribute">SHA512</span>: <span class="hljs-number">84545499</span>ad36da108c6a599edd1d853f82d331bc03273b5278515554866f0c698e881f956b2eabcb6b29c07fa9fa4ff1add5a777b58db8a6a2362cf383b5c04d
Release artifacts are signed with the <span class="hljs-attribute">followingkey</span>:
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//dist.apache.org/repos/dist/dev/singa/KEYS</span>
The signature file <span class="hljs-attribute">is</span>:
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//dist.apache.org/repos/dist/dev/singa/3.1.0.rc2/apache-singa-3.1.0.rc2.tar.gz.asc</span>
The Github tag is <span class="hljs-attribute">at</span>:
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//github.com/apache/singa/releases/tag/3.1.0.rc2</span>
The documentation website is at
<span class="hljs-attribute">http</span>:<span class="hljs-comment">//singa.apache.org/docs/next/installation/</span>
Some examples are available for <span class="hljs-attribute">testing</span>:
<span class="hljs-attribute">https</span>:<span class="hljs-comment">//github.com/apache/singa/tree/master/examples</span>
</code></pre></li>
</ol>
<p>Please vote on releasing this package. The vote is open for at least 72 hours
and passes if a majority of at least three +1 votes are cast.</p>
<p>[ ] +1 Release this package as Apache SINGA X.Y.Z [ ] 0 I don't feel strongly
about it, but I'm okay with the release [ ] -1 Do not release this package
because...</p>
<p>Here is my vote: +1</p>
<pre><code class="hljs">
<span class="hljs-number">7</span>) Sau đó đợi í<span class="hljs-built_in">t</span> nhấ<span class="hljs-built_in">t</span> <span class="hljs-number">48</span> giờ để nhậ<span class="hljs-built_in">n</span> phả<span class="hljs-built_in">n</span> hồi. Bấ<span class="hljs-built_in">t</span> kì PMC, committer hay contributor
đều có thể kiểm tra các <span class="hljs-built_in">t</span>ính <span class="hljs-built_in">n</span>ăng trước khi phá<span class="hljs-built_in">t</span> hành, và đưa ra nhậ<span class="hljs-built_in">n</span> xét. Mọi người <span class="hljs-built_in">n</span>ê<span class="hljs-built_in">n</span> kiểm tra trước khi
đưa ra vote +<span class="hljs-number">1</span>. <span class="hljs-built_in">N</span>ếu vote được thông qua, vui lòng gửi email kế<span class="hljs-built_in">t</span> quả. <span class="hljs-built_in">N</span>ếu không thì cầ<span class="hljs-built_in">n</span> lặp lại trình <span class="hljs-built_in">t</span><span class="hljs-built_in">t</span>ừ đầu.
</code></pre>
<p>To: <a href="mailto:dev@singa.apache.org">dev@singa.apache.org</a> Subject: [RESULT][vote] Release apache-singa-X.Y.Z
(release candidate N)</p>
<p>Thanks to everyone who has voted and given their comments. The tally is as
follows.</p>
<p>N binding +1s: <names></p>
<p>N non-binding +1s: <names></p>
<p>No 0s or -1s.</p>
<p>I am delighted to announce that the proposal to release Apache SINGA X.Y.Z has
passed.</p>
<pre><code class="hljs">
8) Tải gói chương trình để
[<span class="hljs-string">phân bổ</span>](<span class="hljs-link">http://www.apache.org/dev/release-publishing.html#distribution</span>)
tới https://dist.apache.org/repos/dist/release/singa/.
9) Cập nhật trang Tải (Download) trên website SINGA. Tệp tin tar.gz PHẢI được tải từ mirror, sử dụng closer.cgi script; các tạo tác khác PHẢI được tải từ trang chủ Apache. Xem chi tiết tại
[<span class="hljs-string">đây</span>](<span class="hljs-link">http://www.apache.org/dev/release-download-pages.html</span>). Một vài nhận xét chúng tôi nhận được trong các đợt phát hành trước: "Trang Tải chỉ nên được dẫn tới các bản phát hành chính thức, vì vậy phải bao gồm đường dẫn tới GitHub.", "Đường dẫn tới KEYS, sigs và
hashes không nên sử dụng dist.apache.org; mà nên dùng
https://www.apache.org/dist/singa/...;", "Và bạn chỉ cần một đường dẫn tới KEYS,
và cần có hướng dẫn cách sử dụng KEYS + sig hay hash để chứng thực hoàn tất việc tải."
10) Xoá tag RC và tập hợp gói conda packages.
11) Xuất bản thông tin phát hành.
<span class="hljs-code">```</span>
To: announce@apache.org, dev@singa.apache.org
Subject: [ANNOUNCE] Apache SINGA X.Y.Z released
We are pleased to announce that SINGA X.Y.Z is released.
SINGA is a general distributed deep learning platform
for training big deep learning models over large datasets.
The release is available at: http://singa.apache.org/downloads.html
The main features of this release include XXX
We look forward to hearing your feedback, suggestions,
and contributions to the project.
On behalf of the SINGA team, {SINGA Team Member Name}
<span class="hljs-code">```</span>
</code></pre>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/4.0.0_Viet/contribute-docs"><span class="arrow-prev"></span><span>How to Contribute to Documentation</span></a><a class="docs-next button" href="/docs/4.0.0_Viet/git-workflow"><span>Git Workflow</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/https://apache-singa.readthedocs.io/en/latest/">API Reference</a><a href="/docs/examples">Examples</a><a href="/docs/download-singa">Development</a></div><div><h5>Community</h5><a href="/en/users.html">User Showcase</a><a href="/docs/history-singa">SINGA History</a><a href="/docs/team-list">SINGA Team</a><a href="/blog">SINGA News</a><a href="https://github.com/apache/singa">GitHub</a><div class="social"><a class="github-button" href="https://github.com/apache/singa" data-count-href="/apache/singa/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">apache/singa-doc</a></div><div class="social"><a href="https://twitter.com/ApacheSINGA" class="twitter-follow-button">Follow @ApacheSINGA</a></div></div><div><h5>Apache Software Foundation</h5><a href="https://apache.org/" target="_blank" rel="noreferrer noopener">Foundation</a><a href="http://www.apache.org/licenses/" target="_blank" rel="noreferrer noopener">License</a><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noreferrer noopener">Sponsorship</a><a href="http://www.apache.org/foundation/thanks.html" target="_blank" rel="noreferrer noopener">Thanks</a><a href="http://www.apache.org/events/current-event" target="_blank" rel="noreferrer noopener">Events</a><a href="http://www.apache.org/security/" target="_blank" rel="noreferrer noopener">Security</a></div></section><div style="width:100%;text-align:center"><a href="https://apache.org/" target="_blank" rel="noreferrer noopener" class="ApacheOpenSource"><img src="/img/asf_logo_wide.svg" alt="Apache Open Source"/></a><section class="copyright" style="max-width:60%;margin:0 auto">Copyright © 2023
The Apache Software Foundation. All rights reserved.
Apache SINGA, Apache, the Apache feather logo, and
the Apache SINGA project logos are trademarks of The
Apache Software Foundation. All other marks mentioned
may be trademarks or registered trademarks of their
respective owners.</section></div></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script><script>
document.addEventListener('keyup', function(e) {
if (e.target !== document.body) {
return;
}
// keyCode for '/' (slash)
if (e.keyCode === 191) {
const search = document.getElementById('search_input_react');
search && search.focus();
}
});
</script><script>
var search = docsearch({
apiKey: '45202133606c0b5fa6d21cddc4725dd8',
indexName: 'apache_singa',
inputSelector: '#search_input_react',
algoliaOptions: {"facetFilters":["language:en","version:3.0.0"]}
});
</script></body></html>