[DOCS] Bump Sphinx and Pydata versions (#24083)

Sphinx -> 7.2.6
PyData -> 0.14.4

---------

Co-authored-by: Andrzej Kopytko <andrzejx.kopytko@intel.com>
Co-authored-by: Karol Blaszczak <karol.blaszczak@intel.com>
This commit is contained in:
Bartlomiej Bielawa 2024-04-18 11:56:42 +02:00 committed by GitHub
parent 7b7650e86e
commit 6029d1012d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
42 changed files with 851 additions and 896 deletions

1
.gitignore vendored
View File

@ -28,6 +28,7 @@ temp/
CMakeLists.txt.user
docs/IE_PLUGIN_DG/html/
CMakeUserPresets.json
venv
*.project
*.cproject

View File

@ -31,6 +31,7 @@ function(build_docs)
set(ARTICLES_HELPER_SCRIPT "${SCRIPTS_DIR}/articles_helper.py")
set(COPY_IMAGES_SCRIPT "${SCRIPTS_DIR}/copy_images.py")
set(DOXYGEN_MAPPING_SCRIPT "${SCRIPTS_DIR}/create_mapping.py")
set(DOCS_MAPPING_SCRIPT "${SCRIPTS_DIR}/create_doc_mapping.py")
set(BREATHE_APIDOC_SCRIPT "${SCRIPTS_DIR}/apidoc.py")
# Doxygen/Sphinx setup
@ -107,6 +108,7 @@ function(build_docs)
POST_BUILD
COMMAND ${Python3_EXECUTABLE} ${COPY_IMAGES_SCRIPT} ${DOXYGEN_XML_OUTPUT} ${SPHINX_SOURCE_DIR}
COMMAND ${Python3_EXECUTABLE} ${DOXYGEN_MAPPING_SCRIPT} ${DOXYGEN_XML_OUTPUT} ${DOCS_BUILD_DIR} ${OpenVINO_SOURCE_DIR}/../
COMMAND ${Python3_EXECUTABLE} ${DOCS_MAPPING_SCRIPT} ${DOCS_BUILD_DIR} ${ARTICLES_EN_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${SPHINX_SETUP_DIR} ${SPHINX_SOURCE_DIR}
${post_commands}
VERBATIM)

View File

@ -1,186 +0,0 @@
============================
OpenVINO 2024.0
============================
.. meta::
:google-site-verification: _YqumYQ98cmXUTwtzM_0WIIadtDc6r_TMYGbmGgNvrk
**OpenVINO is an open-source toolkit** for optimizing and deploying deep learning models from cloud
to edge. It accelerates deep learning inference across various use cases, such as generative AI, video,
audio, and language with models from popular frameworks like PyTorch, TensorFlow, ONNX, and more.
Convert and optimize models, and deploy across a mix of Intel® hardware and environments, on-premises
and on-device, in the browser or in the cloud.
Check out the `OpenVINO Cheat Sheet. <https://docs.openvino.ai/2024/_static/download/OpenVINO_Quick_Start_Guide.pdf>`__
.. container::
:name: ov-homepage-banner
.. raw:: html
<link rel="stylesheet" type="text/css" href="_static/css/homepage_style.css">
<div class="line-block">
<section class="splide" aria-label="Splide Banner Carousel">
<div class="splide__track">
<ul class="splide__list">
<li id="ov-homepage-slide1" id class="splide__slide">
<p class="ov-homepage-slide-title">An open-source toolkit for optimizing and deploying deep learning models.</p>
<p class="ov-homepage-slide-subtitle">Boost your AI deep-learning inference performance!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/get-started.html">Learn more</a>
</li>
<li id="ov-homepage-slide2" class="splide__slide">
<p class="ov-homepage-slide-title">Better OpenVINO integration with PyTorch!</p>
<p class="ov-homepage-slide-subtitle">Use PyTorch models directly, without converting them first.</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/model-preparation/convert-model-pytorch.html">Learn more</a>
</li>
<li id="ov-homepage-slide3" class="splide__slide">
<p class="ov-homepage-slide-title">OpenVINO via PyTorch 2.0 torch.compile()</p>
<p class="ov-homepage-slide-subtitle">Use OpenVINO directly in PyTorch-native applications!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/torch-compile.html">Learn more</a>
</li>
<li id="ov-homepage-slide4" class="splide__slide">
<p class="ov-homepage-slide-title">Do you like Generative AI?</p>
<p class="ov-homepage-slide-subtitle">You will love how it performs with OpenVINO!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/learn-openvino/interactive-tutorials-python.html">Check out our new notebooks</a>
</li>
<li id="ov-homepage-slide5" id class="splide__slide">
<p class="ov-homepage-slide-title">Boost your AI deep-learning inference performance.</p>
<p class="ov-homepage-slide-subtitle">Use Intel's open-source OpenVINO toolkit for optimizing and deploying deep learning models.</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/running-inference/integrate-openvino-with-your-application.html">Learn more</a>
</li>
</ul>
</div>
</section>
</div>
|
|
.. image:: _static/images/openvino-overview-diagram.jpg
:align: center
:alt: openvino diagram
|
Places to Begin
++++++++++++++++++++++++++++
.. grid:: 2 2 3 3
:class-container: ov-homepage-higlight-grid
.. grid-item-card:: Installation
:img-top: ./_static/images/home_begin_tile_01.png
:class-card: homepage_begin_tile
This guide introduces installation and learning materials for Intel® Distribution of OpenVINO™ toolkit.
.. button-link:: get-started/install-openvino.html
:color: primary
:outline:
Get Started
.. grid-item-card:: Performance Benchmarks
:img-top: ./_static/images/home_begin_tile_02.png
:class-card: homepage_begin_tile
See latest benchmark numbers for OpenVINO and OpenVINO Model Server.
.. button-link:: about-openvino/performance-benchmarks.html
:color: primary
:outline:
View data
.. grid-item-card:: Framework Compatibility
:img-top: ./_static/images/home_begin_tile_03.png
:class-card: homepage_begin_tile
Load models directly (for TensorFlow, ONNX, PaddlePaddle) or convert to OpenVINO format.
.. button-link:: openvino-workflow/model-preparation.html
:color: primary
:outline:
Load your model
.. grid-item-card:: Easy Deployment
:img-top: ./_static/images/home_begin_tile_04.png
:class-card: homepage_begin_tile
Get started in just a few lines of code.
.. button-link:: openvino-workflow/running-inference.html
:color: primary
:outline:
Run Inference
.. grid-item-card:: Serving at scale
:img-top: ./_static/images/home_begin_tile_05.png
:class-card: homepage_begin_tile
Cloud-ready deployments for microservice applications.
.. button-link:: openvino-workflow/running-inference.html
:color: primary
:outline:
Try it out
.. grid-item-card:: Model Compression
:img-top: ./_static/images/home_begin_tile_06.png
:class-card: homepage_begin_tile
Reach for performance with post-training and training-time compression with NNCF.
.. button-link:: openvino-workflow/model-optimization.html
:color: primary
:outline:
Optimize now
|
Key Features
++++++++++++++++++++++++++++
.. grid:: 2 2 2 2
:class-container: homepage_begin_container
.. grid-item-card:: Model Compression
:img-top: ./_static/images/home_key_feature_01.png
:class-card: homepage_begin_key
You can either link directly with OpenVINO Runtime to run inference locally or use OpenVINO Model Server to serve model inference from a separate server or within a Kubernetes environment.
.. grid-item-card:: Fast & Scalable Deployment
:img-top: ./_static/images/home_key_feature_02.png
:class-card: homepage_begin_key
Write an application once, deploy it anywhere, achieving maximum performance from hardware. Automatic device discovery allows for superior deployment flexibility. OpenVINO Runtime supports Linux, Windows, and MacOS and provides Python, C++, and C API. Use your preferred language and OS.
.. grid-item-card:: Lighter Deployment
:img-top: ./_static/images/home_key_feature_03.png
:class-card: homepage_begin_key
Designed with minimal external dependencies reduces the application footprint, simplifying installation and dependency management. Popular package managers enable application dependencies to be easily installed and upgraded. Custom compilation for your specific model(s) further reduces the final binary size.
.. grid-item-card:: Enhanced App Start-Up Time
:img-top: ./_static/images/home_key_feature_04.png
:class-card: homepage_begin_key
In applications where fast start-up is required, OpenVINO significantly reduces first-inference latency by using the CPU for initial inference and then switching to another device once the model has been compiled and loaded to memory. Compiled models are cached, improving start-up time even more.
.. toctree::
:maxdepth: 2
:hidden:
GET STARTED <get-started>
LEARN OPENVINO <learn-openvino>
OPENVINO WORKFLOW <openvino-workflow>
DOCUMENTATION <documentation>
ABOUT OPENVINO <about-openvino>

View File

@ -1 +0,0 @@
<meta http-equiv="refresh" content="0; URL='home.html'" />

View File

@ -1,6 +1,10 @@
import xml.etree.ElementTree as ET
from sphinx_sitemap import setup as base_setup, get_locales, hreflang_formatter
import queue
from pathlib import Path
from sphinx_sitemap import setup as base_setup, get_locales, hreflang_formatter, add_html_link, record_builder_type
from sphinx.util.logging import getLogger
logger = getLogger(__name__)
def setup(app):
app.add_config_value(
@ -20,6 +24,8 @@ def setup(app):
if listener.handler.__name__ == 'create_sitemap':
app.disconnect(listener.id)
app.connect("builder-inited", record_builder_type)
app.connect("html-page-context", add_html_link)
app.connect('build-finished', create_sitemap)
return setup
@ -30,11 +36,15 @@ def create_sitemap(app, exception):
urlset = app.builder.config.ov_sitemap_urlset
meta = app.builder.config.ov_sitemap_meta
site_url = app.builder.config.site_url
site_url = site_url.rstrip('/') + '/'
if not site_url:
print("sphinx-sitemap error: no site_url"
"are set in conf.py. Sitemap not built.")
site_url = app.builder.config.site_url or app.builder.config.html_baseurl
if site_url:
site_url.rstrip("/") + "/"
else:
logger.warning(
"sphinx-sitemap: html_baseurl is required in conf.py." "Sitemap not built.",
type="sitemap",
subtype="configuration",
)
return
if (not app.sitemap_links):
print("sphinx-sitemap warning: No pages generated for %s" %
@ -51,7 +61,7 @@ def create_sitemap(app, exception):
for item in urlset:
root.set(*item)
get_locales(app, exception)
locales = get_locales(app, exception)
if app.builder.config.version:
version = app.builder.config.version + '/'
@ -78,7 +88,7 @@ def create_sitemap(app, exception):
ET.SubElement(namespace_element, tag_name).text = tag_value
if len(app.locales) > 0:
for lang in app.locales:
for lang in locales:
lang = lang + '/'
linktag = ET.SubElement(
url,
@ -90,7 +100,7 @@ def create_sitemap(app, exception):
lang=lang, version=version, link=link
))
filename = app.outdir + "/" + app.config.sitemap_filename
filename = Path(app.outdir) / app.config.sitemap_filename
ET.ElementTree(root).write(filename,
xml_declaration=True,
encoding='utf-8',

View File

@ -1,15 +1,13 @@
import os
import sys
import json
import sys
from json import JSONDecodeError
from sphinx.errors import ExtensionError
import jinja2
from docutils.parsers import rst
from pathlib import Path
from bs4 import BeautifulSoup
from sphinx.util import logging
from pydata_sphinx_theme import index_toctree
from .directives.code import DoxygenSnippet, Scrollbox, Nodescrollbox, visit_scrollbox, depart_scrollbox, Showcase, Nodeshowcase, visit_showcase, depart_showcase
from .directives.code import DoxygenSnippet, Scrollbox, Nodescrollbox, visit_scrollbox, depart_scrollbox
SPHINX_LOGGER = logging.getLogger(__name__)
@ -18,9 +16,8 @@ def setup_edit_url(app, pagename, templatename, context, doctree):
"""Add a function that jinja can access for returning the edit URL of a page."""
def has_github_page():
doxygen_mapping_file = app.config.html_context.get('doxygen_mapping_file')
name = pagename.rsplit('-')[0]
if name in doxygen_mapping_file:
doxygen_mapping_file = app.config.doxygen_mapping_file
if os.path.basename(pagename) in doxygen_mapping_file:
return True
return False
@ -29,11 +26,6 @@ def setup_edit_url(app, pagename, templatename, context, doctree):
doc_context = dict()
doc_context.update(**context)
# Make sure that doc_path has a path separator only if it exists (to avoid //)
doc_path = doc_context.get("doc_path", "")
if doc_path and not doc_path.endswith("/"):
doc_path = f"{doc_path}/"
# ensure custom URL is checked first, if given
url_template = doc_context.get("edit_page_url_template")
@ -47,15 +39,15 @@ def setup_edit_url(app, pagename, templatename, context, doctree):
return jinja2.Template(url_template).render(**doc_context)
url_template = '{{ github_url }}/{{ github_user }}/{{ github_repo }}' \
'/edit/{{ github_version }}/{{ doc_path }}{{ file_name }}'
'/edit/{{ github_version }}/{{ file_name }}'
doxygen_mapping_file = app.config.html_context.get('doxygen_mapping_file')
rst_name = pagename.rsplit('-')[0]
doxygen_mapping_file = app.config.doxygen_mapping_file
rst_name = os.path.basename(pagename)
file_name = doxygen_mapping_file[rst_name]
parent_folder = Path(os.path.dirname(file_name)).parts[0]
file_name = Path(*Path(file_name).parts[1:]).as_posix()
doc_context.update(doc_path=doc_path, file_name=file_name)
doc_context.update(file_name=file_name)
try:
repositories = app.config.repositories
except AttributeError:
@ -87,118 +79,6 @@ def get_theme_path():
return theme_path
def add_toctree_functions(app, pagename, templatename, context, doctree):
# override pydata_sphinx_theme
def generate_sidebar_nav(kind, startdepth=None, **kwargs):
"""
Return the navigation link structure in HTML. Arguments are passed
to Sphinx "toctree" function (context["toctree"] below).
We use beautifulsoup to add the right CSS classes / structure for bootstrap.
See https://www.sphinx-doc.org/en/master/templating.html#toctree.
Parameters
----------
kind : ["navbar", "sidebar", "raw"]
The kind of UI element this toctree is generated for.
startdepth : int
The level of the toctree at which to start. By default, for
the navbar uses the normal toctree (`startdepth=0`), and for
the sidebar starts from the second level (`startdepth=1`).
kwargs: passed to the Sphinx `toctree` template function.
Returns
-------
HTML string (if kind in ["navbar", "sidebar"])
or BeautifulSoup object (if kind == "raw")
"""
open_first = False
if 'open_first' in kwargs:
open_first = kwargs.pop('open_first')
if startdepth is None:
startdepth = 1 if kind == "sidebar" else 0
if startdepth == 0:
toc_sphinx = context["toctree"](**kwargs)
else:
# select the "active" subset of the navigation tree for the sidebar
toc_sphinx = index_toctree(app, pagename, startdepth, **kwargs)
soup = BeautifulSoup(toc_sphinx, "html.parser")
if kind == "sidebar":
# Add bootstrap classes for first `ul` items
for ul in soup("ul", recursive=False):
ul.attrs["class"] = ul.attrs.get("class", []) + ["nav", "bd-sidenav"]
toctree_checkbox_count = 0
for li in soup.find_all("li"):
# pair "current" with "active" since that's what we use w/ bootstrap
if "current" in li["class"]:
li["class"].append("active")
# Remove navbar/sidebar links to sub-headers on the page
if li.find("a"):
href = li.find("a")["href"]
if "#" in href and href != "#":
li.decompose()
continue
if kind == "navbar":
li["class"].append("nav-item")
li.find("a")["class"].append("nav-link")
# only select li items (not eg captions)
# out = "\n".join([ii.prettify() for ii in soup.find_all("li")])
elif kind == "sidebar":
if li is None:
continue
# We check all "li" elements, to add a "current-page" to the correct li.
classes = li.get("class", [])
# Nothing more to do, unless this has "children"
if not li.find("ul"):
continue
# Add a class to indicate that this has children.
li["class"] = classes + ["has-children"]
# We're gonna add a checkbox.
toctree_checkbox_count += 1
checkbox_name = f"toctree-checkbox-{toctree_checkbox_count}"
# Add the "label" for the checkbox which will get filled.
if soup.new_tag is None:
continue
label = soup.new_tag("label", attrs={"for": checkbox_name})
label.append(soup.new_tag("i", attrs={"class": "fas fa-chevron-down"}))
li.insert(1, label)
# Add the checkbox that's used to store expanded/collapsed state.
checkbox = soup.new_tag(
"input",
attrs={
"type": "checkbox",
"class": ["toctree-checkbox"],
"id": checkbox_name,
"name": checkbox_name,
},
)
# if this has a "current" class, be expanded by default
# (by checking the checkbox)
if "current" in classes or (open_first and toctree_checkbox_count == 1):
checkbox.attrs["checked"] = ""
li.insert(1, checkbox)
return soup
context["generate_sidebar_nav"] = generate_sidebar_nav
def read_doxygen_configs(app, env, docnames):
if app.config.html_context.get('doxygen_mapping_file'):
try:
@ -215,20 +95,13 @@ def setup(app):
app.config.templates_path.append(templates_path)
app.config.html_static_path.append(static_path)
app.connect("html-page-context", setup_edit_url, priority=sys.maxsize)
app.connect("html-page-context", add_toctree_functions)
app.connect('env-before-read-docs', read_doxygen_configs)
app.add_html_theme('openvino_sphinx_theme', theme_path)
rst.directives.register_directive('doxygensnippet', DoxygenSnippet)
rst.directives.register_directive('scrollbox', Scrollbox)
rst.directives.register_directive('showcase', Showcase)
app.add_node(
Nodescrollbox,
html=(visit_scrollbox, depart_scrollbox),
latex=(visit_scrollbox, depart_scrollbox)
)
app.add_node(
Nodeshowcase,
html=(visit_showcase, depart_showcase),
latex=(visit_showcase, depart_showcase)
)
return {'parallel_read_safe': True, 'parallel_write_safe': True}

View File

@ -24,13 +24,13 @@
--ost-color-sst-dropdown-background:var(--ost-color-navbar-background);
--ost-color-sst-dropdown-background-active:var(--ost-color-primary-variant);
/* Override Pydata Sphinx Theme Variables */
--pst-font-family-base: var(--ost-font-family), var(--pst-font-family-base-system);
--pst-font-family-heading: var(--ost-font-family), var(--pst-font-family-base-system);
--pst-font-size-base: var(--ost-font-size);
--pst-color-sidebar-link-active: var(--ost-color-sidebar-link-active);
--pst-color-sidebar-link-hover: var(--ost-color-sidebar-link-hover);
--pst-color-sidebar-link: var(--ost-color-sidebar-link);
--pst-color-primary: var(--ost-color-primary);
--pst-color-secondary: var(--ost-color-primary)!important;
--pst-color-link: var(--ost-color-link);
--pst-color-link-hover: var(--ost-color-link-hover);
--tabs--label-text--active: var(--ost-tabs--label-text--active);
@ -47,7 +47,7 @@ body {
}
.bd-sidebar .nav .active > a {
font-weight: 600!important;
font-weight: 700!important;
}
.toc-entry >.nav-link.active {
@ -55,138 +55,6 @@ body {
border-color: rgb(var(--ost-color-primary));
}
/* Showcase Extension */
:root {
/* Showcase - Colors */
--ov-color: hsl(261, 87.2%, 54.1%);
--black: hsl(0, 0%, 0%);
--white: hsl(0, 0%, 100%);
--ov-light-blue: rgba(229, 242, 255, 0.95);
--ov-blue: rgba(0, 104, 181, 0.95);
--ov-dark-blue: rgba(0, 74, 134, 0.95);
}
.showcase-wrap {
width: 100%;
display: inline-block;
margin: 10px 10px 30px 10px;
}
.showcase {
width: 100%;
min-height: 150px;
vertical-align: top;
}
.showcase-content {
min-height: inherit;
width: -webkit-calc(100% - 160px);
width: -moz-calc(100% - 160px);
width: calc(100% - 160px);
padding: 0.5rem 1.2rem 0.5rem;
display: inline-block;
position: relative;
}
.showcase-content::after {
content: "";
position: absolute;
height: 0.15rem;
width: 100%;
bottom: 0px;
left: 0px;
background-color: var(--ov-light-blue);
}
.showcase-img {
object-fit: cover;
width: 150px;
height: 150px;
position: absolute;
border-radius: 0.25rem;
box-shadow: 0.25rem 0.25rem 0.5rem rgba(0,0,0,0.25);
border: 1px solid rgba(0, 0, 0, 0.25);
}
.showcase-img-placeholder {
min-height: 150px;
width: 150px;
text-align: left;
vertical-align: top;
display: inline-block;
position: relative;
margin-right: 10px;
}
.showcase-title {
font-size: 0.90rem;
line-height: 1;
margin: 0px 0px 10px 0px;
color: var(--black);
position: relative;
width: fit-content;
width: -moz-fit-content;
}
.showcase-title::after {
content: "";
position: absolute;
height: 0.15rem;
width: 100%;
bottom: -5px;
left: 0px;
background-color: var(--ov-light-blue);
}
.showcase-content-container p {
font-size: 1.2rem;
line-height: 1.2;
color: var(--black);
position: relative;
}
.showcase-content-container a > h2 {
display: block!important;
width: fit-content;
width: -moz-fit-content;
}
.showcase-badge {
margin-right: 3px;
}
.showcase-button {
width: 100px;
float: right;
border: none;
font-size: 1rem;
color: #00A3F6;
background-color: #FFF;
position: absolute;
right: 0px;
bottom: 0px;
}
.showcase-button:focus {
outline: none!important;
}
.showcase-button:hover {
text-decoration: underline;
}
.showcase-badge:hover, .showcase-img:hover {
transform: scale(1.05);
}
.showcase-img:hover {
box-shadow: 0 0 10px 2px rgba(108,36,240,0.3) !important;
}
/* Scrollbox Extension */
.scrollbox {
@ -279,7 +147,6 @@ blockquote p {
/* Edit this page */
.editthispage {
text-align: end;
padding-top:0;
}
@ -332,6 +199,7 @@ blockquote p {
.navbar {
background:rgba(var(--ost-color-navbar-background), 1) !important;
height: 60px;
}
.navbar-light .navbar-nav li a.nav-link {
@ -361,10 +229,6 @@ blockquote p {
flex-wrap: wrap;
}
.navbar-nav {
flex-direction: column !important;
}
.container-xl {
display: block;
}

View File

@ -1,32 +0,0 @@
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:members:
:show-inheritance:
:inherited-members:
{% block methods %}
.. automethod:: __init__
{% if methods %}
.. rubric:: Methods
.. autosummary::
{% for met in methods %}
~{{ name }}.{{ met }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block attributes %}
{% if attributes %}
.. rubric:: Attributes
.. autosummary::
{% for att in attributes %}
~{{ name }}.{{ att }}
{%- endfor %}
{% endif %}
{% endblock %}

View File

@ -1,68 +0,0 @@
{{ fullname | escape | underline}}
.. automodule:: {{ fullname }}
{% block attributes %}
{% if attributes %}
.. rubric:: Module Attributes
.. autosummary::
:toctree:
{% for attr in attributes %}
{{ attr }}
{% endfor %}
{% endif %}
{% endblock %}
{% block functions %}
{% if functions %}
.. rubric:: Functions
.. autosummary::
:toctree:
{% for func in functions %}
{% if not func.startswith('_') %}
{{ func }}
{% endif %}
{%- endfor %}
{% endif %}
{% endblock %}
{% block classes %}
{% if classes %}
.. rubric:: Classes
.. autosummary::
:toctree:
:template: custom-class-template.rst
{% for cl in classes %}
{{ cl }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block exceptions %}
{% if exceptions %}
.. rubric:: Exceptions
.. autosummary::
:toctree:
{% for item in exceptions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block modules %}
{% if modules %}
.. rubric:: Modules
.. autosummary::
:toctree:
:template: custom-module-template.rst
:recursive:
{% for mod in modules %}
{{ mod }}
{%- endfor %}
{% endif %}
{% endblock %}

View File

@ -1,6 +1,6 @@
<div class="tocsection download-docs">
<div class="dropdown sst-dropdown">
<button class="button bttn-prm button-size-m" data-display="static" type="button" id="download-options"
<button class="button bttn-prm sst-btn button-size-m" data-display="static" type="button" id="download-options"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Download Docs
</button>

View File

@ -1,7 +1,8 @@
</br>
{% if sourcename is defined and theme_use_edit_page_button==true and page_source_suffix and has_github_page %}
{% set src = sourcename.split('.') %}
<div class="editthispage">
<a class='button button-ghost button-size-m' href="{{ get_edit_url() }}">
<a class='button button-size-m' href="{{ get_edit_url() }}">
<i class="fas fa-pencil-alt"></i> {{ _("Edit this page") }}
</a>
</div>

View File

@ -1,19 +0,0 @@
{%- macro icon_link_nav_item(url, icon, name) -%}
{%- if url | length > 2 %}
<li class="nav-item">
<a class="nav-link" href="{{ url }}" rel="noopener" target="_blank" title="{{ _(name) }}">
<span><i class="{{ icon }}"></i></span>
<label class="sr-only">{{ _(name) }}</label>
</a>
</li>
{%- endif -%}
{%- endmacro -%}
<ul id="navbar-icon-links" class="navbar-nav" aria-label="{{ _(theme_icon_links_label) }}">
{%- block icon_link_shortcuts -%}
{{ icon_link_nav_item(theme_github_url, "sst-github", "GitHub") -}}
{% endblock -%}
{%- for icon_link in theme_icon_links -%}
{{ icon_link_nav_item(icon_link["url"], icon_link["icon"], icon_link["name"]) -}}
{%- endfor %}
</ul>

View File

@ -1,94 +1,155 @@
{%- extends "pydata_sphinx_theme/layout.html" %}
{# prev/next buttons #}
{% macro ovino_prev_next(prev, next, prev_title='', next_title='') %}
{%- if prev %}
<a class='button bttn-sec button-size-l' id="prev-link" href="{{ prev.link|e }}" title="{{ _('previous page')}}">Prev</a>
{%- endif %}
{%- if next %}
<a class='button bttn-sec button-size-l' id="next-link" href="{{ next.link|e }}" title="{{ _('next page')}}">Next</a>
{%- endif %}
{% endmacro %}
{# We redefine <html/> for "basic/layout.html" to add a default `data-theme` attribute when
# a default mode has been set. This also improves compatibility when JavaScript is disabled.
#}
{% set html_tag %}
<html{% if not html5_doctype %} xmlns="http://www.w3.org/1999/xhtml"{% endif %}{% if language is not none %} lang="{{ language }}"{% endif %} {% if default_mode %}data-theme="{{ default_mode }}"{% endif %}>
{% endset %}
{%- extends "basic/layout.html" %}
{%- import "static/webpack-macros.html" as _webpack with context %}
{# Metadata and asset linking #}
{# Create the sidebar links HTML here to re-use in a few places #}
{# If we have no sidebar links, pop the links component from the sidebar list #}
{%- set sidebar_nav_html = generate_toctree_html("sidebar",
startdepth=0|int,
show_nav_level=theme_show_nav_level|int,
maxdepth=theme_navigation_depth|int,
collapse=theme_collapse_navigation|tobool,
includehidden=True,
titles_only=True)
-%}
{% if sidebar_nav_html | length == 0 %}
{% set sidebars = sidebars | reject("in", "sidebar-nav-bs.html") | list %}
{% endif %}
{# A flag for whether we include a secondary sidebar based on the page metadata #}
{% set remove_sidebar_secondary = (meta is defined and meta is not none
and 'html_theme.sidebar_secondary.remove' in meta)
or not theme_secondary_sidebar_items %}
{%- block css %}
{# The data-cfasync attribute disables CloudFlare's Rocket loader so that #}
{# mode/theme are correctly set before the browser renders the page. #}
{# https://github.com/pydata/pydata-sphinx-theme/pull/1045 #}
<script type="module" src="https://static.cloud.coveo.com/atomic/v2/atomic.esm.js"></script>
<script data-cfasync="false">
// document.documentElement.dataset.mode = localStorage.getItem("mode") || "{{ default_mode }}";
document.documentElement.dataset.mode = localStorage.getItem("mode") || "light";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
{{ _webpack.head_pre_assets() }}
{{ _webpack.head_pre_icons() }}
{{- css() }}
{{ _webpack.head_js_preload() }}
{%- endblock css %}
{%- block extrahead %}
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="{{ language }}"/>
{%- if last_updated %}
<meta name="docbuild:last-update" content="{{ last_updated | e }}"/>
{%- endif %}
{%- endblock extrahead %}
{% block body_tag %}
{# set up with scrollspy to update the toc as we scroll #}
{# ref: https://getbootstrap.com/docs/4.0/components/scrollspy/ #}
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="{{ default_mode }}">
{% block css %}
{{ super() }}
<link href="{{ pathto('_static/css/media/favicon.ico', 1) }}" rel="shortcut icon">
<link rel="stylesheet" href="{{ pathto('_static/css/openvino_sphinx_theme.css', 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/css/button.css', 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/css/input.css', 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/css/textfield.css', 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/css/tabs.css', 1) }}" type="text/css" />
<script src="{{ pathto('_static/js/openvino_sphinx_theme.js', 1) }}"></script>
<script src="{{ pathto('_static/js/sortable_tables.js', 1) }}"></script>
{% endblock %}
{%- block content %}
{% block docs_navbar %}
<nav class="navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar" id="navbar-main">
{%- include "docs-navbar.html" %}
<div id="collapse-nav-wrapper" class="container-xl">
<button id="collapse-nav" class="button bttn-prm button-size-m" type="button" data-toggle="collapse" data-target="#nav-tree" aria-expanded="false" aria-controls="nav-tree">
Documentation navigation <i class="fas fa-chevron-down"></i>
</button>
</div>
</nav>
{% endblock %}
<div class="container-xl">
<div class="row">
{% block docs_sidebar %}
{% if sidebars %}
<!-- Only show if we have sidebars configured, else just a small margin -->
<div class="col-12 col-md-3 bd-sidebar" id="nav-tree">
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
</div>
{% else %}
<div class="col-12 col-md-1 col-xl-2 bd-sidebar no-sidebar"></div>
{% endif %}
{% endblock %}
{% block docs_toc %}
<div class="d-none d-xl-block col-xl-2 bd-toc">
{% if meta is defined and not (meta is not none and 'notoc' in meta) %}
{% for toc_item in theme_page_sidebar_items %}
<div class="toc-item">
{% include toc_item %}
</div>
{% endfor %}
{% endif %}
</div>
{% endblock %}
{% block docs_main %}
{% if sidebars %}
{% set content_col_class = "col-md-9 col-xl-7" %}
{% else %}
{% set content_col_class = "col-md-11 col-xl-8" %}
{% endif %}
<main class="col-12 {{ content_col_class }} py-md-5 pl-md-5 pr-md-4 bd-content" role="main">
{%- block edit_page -%}
{%- include "edit-this-page.html" with context -%}
{%- endblock %}
{% block docs_body %}
<div>
{% block body %} {% endblock %}
</div>
{% endblock %}
{% if theme_show_prev_next %}
<div class='prev-next-bottom'>
{{ ovino_prev_next(prev, next) }}
</div>
{% endif %}
</main>
{% endblock %}
</div>
</div>
{%- block scripts_end %}
{{ _webpack.body_post() }}
{%- endblock %}
{# A button hidden by default to help assistive devices quickly jump to main content #}
{# ref: https://www.youtube.com/watch?v=VUR0I5mqq7I #}
<a class="skip-link" href="#main-content">{{ _("Skip to main content") }}</a>
{%- endblock %}
{%- block content %}
{# A tiny helper pixel to detect if we've scrolled #}
<div id="pst-scroll-pixel-helper"></div>
{# the scroll to top button #}
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
{{ _("Back to top") }}
</button>
{# checkbox to toggle primary sidebar #}
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
{# Checkboxes to toggle the secondary sidebar #}
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
{# A search field pop-up that will only show when the search button is clicked #}
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">{% include "../components/search-field.html" %}</div>
</div>
{%- if theme_announcement -%}
{% include "sections/announcement.html" %}
{%- endif %}
{% block docs_navbar %}
<nav class="bd-header navbar navbar-expand-lg bd-navbar">
{%- include "sections/header.html" %}
</nav>
{% endblock docs_navbar %}
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
{# Primary sidebar #}
<div class="bd-sidebar-primary bd-sidebar{% if not sidebars %} hide-on-wide{% endif %}">
{% include "sections/sidebar-primary.html" %}
</div>
{# Using an ID here so that the skip-link works #}
<main id="main-content" class="bd-main">
{# Main content area #}
{% block docs_main %}
<div class="bd-content">
<div class="bd-article-container">
{# Article header #}
<div class="bd-header-article">{% include "sections/header-article.html" %}</div>
{# Article content #}
{% block docs_body %}
{# This is empty and only shows up if text has been highlighted by the URL #}
{% include "components/searchbox.html" %}
<article class="bd-article" role="main">
{% block body %}{% endblock %}
</article>
{% endblock docs_body %}
{# Article Footer #}
{% if theme_article_footer_items %}
<footer class="bd-footer-article">
{% include "sections/footer-article.html" %}
</footer>
{% endif %}
{# prev-next buttons #}
{% if theme_show_prev_next %}
<footer class="prev-next-footer">
{% include "components/prev-next.html" %}
</footer>
{% endif %}
</div>
{# Secondary sidebar #}
{% block docs_toc %}
{% if not remove_sidebar_secondary %}
<div class="bd-sidebar-secondary bd-toc">{% include "sections/sidebar-secondary.html" %}</div>
{% endif %}
{% endblock docs_toc %}
</div>
<footer class="bd-footer-content">
{% include "sections/footer-content.html" %}
</footer>
{% endblock docs_main %}
</main>
</div>
</div>
{# Scripts placed at the end of the page to cut down on time to first content #}
{%- block scripts_end %}{{ _webpack.body_post() }}{%- endblock scripts_end %}
{%- endblock content %}
{# Footer #}
{%- block footer %}
{%- include "footer.html" %}
{%- endblock footer %}
{# Silence the sidebars and relbars since we define our own #}
{% block header %}{% endblock %}
{% block relbar1 %}{% endblock %}
{% block relbar2 %}{% endblock %}
{% block sidebarsourcelink %}{% endblock %}

View File

@ -1,19 +0,0 @@
{% if logo %}
{% if not theme_logo_link %}
<a class="navbar-brand" href="{{ pathto(master_doc) }}">
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="logo">
</a>
{% elif theme_logo_link[:4] == 'http' %}
<a class="navbar-brand" href="{{ theme_logo_link }}">
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="logo">
</a>
{% else %}
<a class="navbar-brand" href="{{ pathto(theme_logo_link) }}">
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="logo">
</a>
{% endif %}
{% else %}
<a class="navbar-brand" href="{{ pathto(master_doc) }}">
<p class="title">{{ project }}</p>
</a>
{% endif %}

View File

@ -0,0 +1,44 @@
<nav class="navbar-nav">
<p class="sidebar-header-items__title" role="heading" aria-level="1" aria-label="{{ _('Site Navigation') }}">
{{ _("Site Navigation") }}
</p>
<ul class="bd-navbar-elements navbar-nav">
<div id="navbar-center" class="mr-auto">
<div class="navbar-center-item">
<ul id="navbar-main-elements" class="navbar-nav">
<li class="toctree-l1 nav-item">
<a class="reference external nav-link" href="https://docs.openvino.ai/install">
Install
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference external nav-link" href="https://blog.openvino.ai/">
Blog
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference external nav-link"
href="https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/bd-p/distribution-openvino-toolkit">
Forum
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference external nav-link"
href="https://www.intel.com/content/www/us/en/support/products/96066/software/development-software/openvino-toolkit.html">
Support
</a>
</li>
<li class="toctree-l1 nav-item">
<a class="reference external nav-link" href="https://github.com/openvinotoolkit">
GitHub
</a>
</li>
</ul>
</div>
</div>
</ul>
</nav>

View File

@ -1,9 +0,0 @@
{% set page_toc = generate_toc_html() %}
<div class="tocsection onthispage pt-5 pb-3">
{{ _("On this page") }}
</div>
<nav id="bd-toc-nav">
{{ page_toc }}
</nav>

View File

@ -1,6 +1,6 @@
<div>
<atomic-search-interface id="sa-search">
<atomic-search-box redirection-url="search.html">
</atomic-search-box>
</atomic-search-interface>
</div>
<atomic-search-interface id="sa-search">
<atomic-search-box redirection-url="search.html">
</atomic-search-box>
</atomic-search-interface>
</div>

View File

@ -1,15 +0,0 @@
<nav class="bd-links" id="bd-docs-nav" aria-label="{{ _('Main navigation') }}">
<div class="bd-toc-item active">
{% set open_first = false %}
{% if pagename == 'tutorials' %}
{% set open_first = true %}
{% endif %}
{{ generate_sidebar_nav("sidebar",
maxdepth=theme_navigation_depth|int,
collapse=theme_collapse_navigation|tobool,
includehidden=True,
titles_only=True,
open_first=open_first) }}
</div>
</nav>

View File

@ -3,4 +3,10 @@ inherit = pydata_sphinx_theme
[options]
navbar_end = navbar-icon-links.html, navbar-version-selector.html, navbar-language-selector.html
page_sidebar_items = page-toc.html, download-docs.html
secondary_sidebar_items = page-toc, sourcelink, download-docs, edit-this-page
navbar_center = navbar-nav.html
navbar_persistent =
pygment_dark_style = a11y-high-contrast-light
default_mode = light
footer_start =
footer_end =

View File

@ -1,11 +1,11 @@
# Copyright (C) 2018-2024 Intel Corporation
# Copyright (C) 2018-2023 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
from setuptools import setup
setup(
name='openvino-sphinx-theme',
version='0.0.1',
version='0.0.2',
packages=['openvino_sphinx_theme'],
maintainer='OpenVINO Documentation Team',
include_package_data=True,

View File

@ -7,20 +7,20 @@ breathe==4.35.0
certifi==2023.7.22
colorama==0.4.6
Cython==0.29.33
docutils==0.16
docutils==0.20
idna==3.4
imagesize==1.2.0
importlib-metadata==4.4.0
imagesize==1.3.0
importlib-metadata==4.8.0
iniconfig==1.1.1
ipython==8.10.0
Jinja2==3.1.3
lxml>=4.9.2
MarkupSafe==2.1.1
mistune==2.0.3
myst-parser==0.18.1
myst-parser==2.0.0
packaging==23.0
pluggy==0.13.1
pydata-sphinx-theme==0.7.2
pydata-sphinx-theme==0.14.4
Pygments==2.15.1
pyparsing==3.0.9
pytest==6.2.5
@ -33,19 +33,19 @@ requests==2.31.0
six==1.15.0
snowballstemmer==2.1.0
soupsieve==2.2.1
sphinx==4.5.0
sphinx-copybutton==0.5.1
sphinx-design==0.3.0
sphinx-inline-tabs==2021.8.17b10
sphinx-panels==0.6.0
sphinx==7.2.6
sphinx-copybutton==0.5.2
sphinx-design==0.5.0
sphinx-inline-tabs==2023.4.21
sphinx-sitemap==2.2.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
sphinxcontrib-serializinghtml==1.1.9
toml==0.10.2
urllib3==1.26.18
zipp==3.4.1
openvino
docs/openvino_custom_sphinx_sitemap

View File

@ -0,0 +1,74 @@
import re
import os
import json
from pathlib import Path
import argparse
import logging
# from github import Github
def create_mapping(output_dir: Path, doc_dir_name: str):
mapping = {}
output_dir = output_dir.resolve()
script_dir = os.path.dirname(os.path.realpath(__file__))
directory = os.path.abspath(os.path.join(script_dir, '..', doc_dir_name))
for root, _, files in os.walk(directory):
for file in files:
if file.endswith('.rst'):
file_path = os.path.join(root, file)
file_path = os.path.relpath(file_path, start=os.path.join(directory, '..', '..', '..'))
file_path = file_path.replace('\\', '/').replace('OpenVINO', 'openvino').replace(' ', '-')
file_name_without_extension = os.path.basename(os.path.splitext(file_path)[0])
mapping[file_name_without_extension] = file_path
with open(output_dir.joinpath('doc_mapping.json'), 'w') as f:
json.dump(mapping, f)
def connect_jsons(output_dir: Path):
output_dir = output_dir.resolve()
try:
with open(output_dir.joinpath('mapping.json'), 'r') as f:
data1 = json.load(f)
with open(output_dir.joinpath('doc_mapping.json'), 'r') as f:
data2 = json.load(f)
merged_data = {**data1, **data2}
with open(output_dir.joinpath('mapping.json'), 'w') as f:
json.dump(merged_data, f, indent=4)
except Exception as e:
logging.error(f"Couldn't connect .json files. Error: {repr(e)}")
# def get_file_list_from_github_repo() -> dict:
# username = 'openvinotoolkit'
# repository_name = 'model_server'
# path = 'docs'
# g = Github()
# mapping = {}
# pattern = r'{#([^#]+?)}'
# repo = g.get_repo(f"{username}/{repository_name}")
# contents = repo.get_contents(path)
# for content in contents:
# if content.type == 'file':
# try:
# decoded_content = content.decoded_content.decode('utf-8')[:200]
# match = re.search(pattern, decoded_content[:200])
# if match:
# html_name = match.group(1)
# mapping[html_name] = 'ovms/' + content.path
# except UnicodeDecodeError:
# pass
# return mapping
def main():
parser = argparse.ArgumentParser()
parser.add_argument('output_dir', type=Path, help='Path to the output folder')
parser.add_argument('doc_dir_name', type=Path, help='Path to the documentation folder')
args = parser.parse_args()
output_dir = args.output_dir
doc_dir_name = args.doc_dir_name
create_mapping(output_dir, doc_dir_name)
connect_jsons(output_dir)
if __name__ == '__main__':
main()

View File

@ -1,4 +1,4 @@
# Copyright (C) 2018-2024 Intel Corporation
# Copyright (C) 2018-2023 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
import argparse
@ -10,9 +10,9 @@ from pathlib import Path
REPOSITORIES = [
'openvino',
'omz',
'pot'
'pot',
'ovms',
'ote'
'ote',
]

View File

@ -2,19 +2,19 @@
/* ========================================== */
.benchmark-banner {
position: sticky;
bottom: 0;
width: 100%;
z-index: 1001;
text-align: center;
padding: 7px;
border-width: 0px;
background: #525252;
}
.benchmark-banner p {
margin: 0;
color: #E9E9E9;
}
.benchmark-banner p a {
color: #B4F0FF;
}
position: sticky;
bottom: 0;
width: 100%;
z-index: 1001;
text-align: center;
padding: 7px;
border-width: 0px;
background: #525252;
}
.benchmark-banner p {
margin: 0;
color: #E9E9E9;
}
.benchmark-banner p a {
color: #B4F0FF;
}

View File

@ -20,18 +20,8 @@ main .searchForm {
pre {
white-space: pre-wrap;
word-wrap: break-word;
background-color: #efefef;
}
.notebook-badge {
margin-right: 3px;
}
.notebook-badge-p {
height: 25px!important;
width: auto!important;
margin-right: 3px;
}
/* cookie wap requirement */
a#wap_dns {display: none;}
@ -44,6 +34,7 @@ a#wap_dns {display: none;}
border: solid 1px #bdbdbd;
border-bottom: solid 0px;
margin-bottom: -1px;
border-color: #bdbdbd!important;
}
.sd-tab-set>input:checked+label:hover {
@ -85,7 +76,6 @@ a#wap_dns {display: none;}
padding-left: 4px;
padding-bottom: 6px;
margin: 0 0 0 0;
}
.sd-tab-content .sd-tab-content {
@ -96,16 +86,30 @@ a#wap_dns {display: none;}
background-color: #f8f8f8
}
/* Navigation panels override */
/* =================================================== */
/* Hide home item in the top bar */
ul#navbar-main-elements li:first-of-type {
display: none;
/* Right sidebar settings */
.toc-entry a.nav-link.active {
background-color: transparent;
box-shadow: none;
color: black;
font-weight: 600;
}
/* items on hover */
/* Underline width */
a:hover,
.toc-entry a.nav-link:hover,
nav.bd-links li > a:hover {
text-decoration-thickness: 1px;
}
#bd-docs-nav div ul a:hover {
text-decoration: underline;
color: white;
text-decoration: underline
}
ul#navbar-main-elements > li:hover {
@ -113,29 +117,84 @@ ul#navbar-main-elements > li:hover {
color: #fff;
}
/* First-level items in the side menu */
#bd-docs-nav > div > ul > li {
padding-bottom: 15px;
nav.bd-links .current>a {
box-shadow: none;
font-weight: bold;
color: black;
}
#bd-docs-nav > div > ul > li > a {
color: #000000;
font-weight: bold;
.bd-header .navbar-nav li a.nav-link {
color: #fff;
font-size: 1rem;
white-space: nowrap;
padding-right: 0;
padding: 0 0.8rem;
}
/* Github icon size */
.nav-link[data-bs-original-title="GitHub"] {
font-size: 2rem!important;
}
.bd-header .navbar-nav li a.nav-link:hover {
color: white;
text-decoration: none;
}
.bd-links__title {
display: none;
}
li.toctree-l1.has-children > a.reference.internal {
font-weight: 700;
color: black;
}
.rotate {
transform: rotate(270deg);
}
/* Move sidebar menu arrows to the left */
.bd-sidebar label {
left: 0px;
left: 5px;
height: 20px;
width: 20px;
top: 5px;
}
nav.bd-links li>a {
padding-left: 35px;
}
.bd-main .bd-content {
justify-content: flex-start;
}
.bd-main .bd-content .bd-article-container {
display: flex;
flex-direction: column;
justify-content: start;
max-width: 65em;
overflow-x: auto;
padding: 1rem;
width: 100%;
}
.nav.bd-links {
box-shadow: none
}
@media (min-width: 960px) {
.bd-page-width {
max-width: 113rem;
}
}
/* Moving dropdown arrows to the left */
details.sd-dropdown .sd-summary-up,
details.sd-dropdown .sd-summary-down {
left: 10px;
top: 10px!important;
}
@ -155,21 +214,23 @@ details.sd-dropdown .sd-summary-title {
padding-left: 40px;
}
/* Second level items */
#bd-docs-nav > div > ul > li > ul {
padding-left: 0.3rem;
}
/* Overwrite menu chevron directions for open and closed states */
.toctree-checkbox~label i {
.label.toctree-toggle {
transform: rotate(270deg);
}
.toctree-checkbox:checked~label i {
.label.toctree-toggle:checked~label i {
transform: rotate(0deg);
}
/* Doc version dropdown formatting override */
/* =================================================== */
[aria-labelledby="version-selector"] {
@ -267,35 +328,60 @@ div.highlight {
color: #fff;
}
.bd-sidebar {
top: calc(var(--pst-header-height));
/* Transition banner */
/* =================================================== */
.transition-banner {
top: 60px;
background: #76CEFF;
position: fixed;
text-align: center;
color: white;
z-index: 1001;
display: block;
padding:0 2rem;
font-size: var(--pst-sidebar-font-size);
border: none;
border-radius: 0;
font-weight: bold;
width: 100%;
margin-right: auto;
margin-left: auto;
}
.bd-links {
margin-top: 10px;
.transition-banner > p {
margin-bottom: 0;
}
body {
padding-top: calc(var(--pst-header-height));
.transition-banner .close-banner {
position:absolute;
top:0;
right:0;
padding: 0 1.25rem;
color: #000;
background-color: transparent;
border: 0;
float: right;
font-size: 1.5rem;
font-weight: 700;
line-height: 1;
text-shadow: 0 1px 0 #fff;
opacity: .5;
}
.bd-toc {
border-left: 1px solid #eee;
top: calc(var(--pst-header-height) );
padding-left: 0px;
}
.tocsection {
border-left: 0px solid #eee;
.hidden-banner {
display: none!important;
}
.section-nav {
border-left: 0px solid #eee;
}
/* Responsiveness */
/* =================================================== */
@media (max-width: 720px) {
.transition-banner {
margin-top: 2rem;
}
}
@media (min-width: 1200px) {
.container,
.container-lg,
@ -575,17 +661,13 @@ body {
grid-template-columns: 1fr;
}
.modal-content-grid p {
font-size: 0.6rem;
}
.modal-content-grid-container .column {
min-width: 100px;
}
.modal-content-grid-container label {
margin-bottom: 0;
padding-right: 6px;
padding-right: 4px;
}
.modal-content-grid-container input {
@ -626,13 +708,6 @@ body {
margin-bottom: 0rem;
}
.ul {
display: flex;
flex-direction: row !important;
margin: 0px;
padding: 0px 0px 0px 10px;
}
.benchmark-graph-results-header {
display: flex;
justify-content: space-between;

View File

@ -1,9 +1,6 @@
/* overrides */
.switcher-set {display: none;}
/* === INTRO TEXT ======================================================================== */
#GSG_introtext a {
@ -16,6 +13,7 @@
color: #fff;
text-align: center;
}
#GSG_introtext a::after {
display: block;
font-size: 0.8em;
@ -27,7 +25,6 @@
#GSG_introtext a:nth-of-type(1)::after {content: "Estimate image depth (no install required)";}
#GSG_introtext a:nth-of-type(2)::after {content: "View options";}
#GSG_introtext a:nth-of-type(3)::after {content: "Tutorials, basics, and features";}
#GSG_introtext a:nth-of-type(1) {margin-left: 0;}
#GSG_introtext a:nth-of-type(3) {margin-right: 0;}
@ -39,11 +36,13 @@
margin: 0 auto;
width: 100%;
}
#GSG_nextstepchoice a {
display: block;
width: 100%;
padding: 10px 15px;
}
#GSG_nextstepchoice a h4 {
display: inline-block;
height: 30px;
@ -52,16 +51,14 @@
line-height: 2em;
font-weight: bold;
margin: 0;
border-bottom: 1px solid #0068B5;
transition: all 0.5s;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;
-ms-transition: all 0.5s;
}
#GSG_nextstepchoice a p {
color: #0068B5;
text-align: left;
@ -77,13 +74,6 @@
text-decoration:none;
}
/* === screen narrow =========================================================================== */
@media only screen and (max-width: 800px) {
#GSG_introtext a { /* === intro tiles float === */

View File

@ -214,6 +214,13 @@ h1 {
box-shadow: none !important;
}
.ov-homepage-higlight-grid .sd-card {
transition: 0.5s;
overflow: hidden;
}
.ov-homepage-higlight-grid .sd-card-title {
height: 10px;
margin-bottom: 2rem;

File diff suppressed because one or more lines are too long

0
docs/sphinx_setup/_static/images/datumaro.png Executable file → Normal file
View File

View File

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("chart.js")):"function"==typeof define&&define.amd?define(["chart.js"],e):t.PluginBarchartBackground=e(t.Chart)}(this,function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r={color:"#f3f3f3",axis:"category",mode:"odd"};var o={id:"chartJsPluginBarchartBackground",_hasData:function(t){return t&&t.datasets&&t.datasets.length>0},_findScale:function(t,e){var r=Object.keys(t.scales).map(function(e){return t.scales[e]});return"category"===e.axis?r.find(function(t){return"hierarchical"===t.type||"category"===t.type}):r.find(function(t){return t.id.startsWith(e.axis)})},beforeDraw:function(t,e,o){o=Object.assign({},r,o);var n=this._findScale(t,o);if(this._hasData(t.config.data)&&n){var i=n.getTicks();if(i&&0!==i.length){var a=n.isHorizontal(),f=t.chartArea,c=n.options.gridLines,u=t.ctx;u.save(),u.fillStyle=o.color;var l=i.map(function(t,e){return function(t,e,r){var o=t.getPixelForTick(e);return r&&(o-=0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(e-1))/2),o}(n,e,c.offsetGridLines&&i.length>1)}),s="odd"===o.mode?0:1;if(l.length%2==1-s&&l.push(a?f.right:f.bottom),a)for(var d=f.bottom-f.top,y=s;y<l.length;y+=2){var h=l[y],p=l[y+1];u.fillRect(h,f.top,p-h,d)}else for(var g=f.right-f.left,m=s;m<l.length;m+=2){var b=l[m],v=l[m+1];u.fillRect(f.left,b,g,v-b)}u.restore()}}}};return"function"==typeof define&&define.amd||"object"===("undefined"==typeof module?"undefined":e(module))&&module.exports||t.pluginService.register(o),o});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
/*!
* @license
* chartjs-plugin-deferred v1.0.2
* https://chartjs-plugin-deferred.netlify.app
* (c) 2016-2021 chartjs-plugin-deferred contributors
* Released under the MIT license
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("chart.js")):"function"==typeof define&&define.amd?define(["chart.js"],t):t(e.Chart)}(this,function(e){"use strict";var r=(e=e&&e.hasOwnProperty("default")?e.default:e).helpers,a="$chartjs_deferred",i="$deferred";function d(e,t){t?window.setTimeout(e,t):r.requestAnimFrame.call(window,e)}function o(e,t){var n=parseInt(e,10);return isNaN(n)?0:"string"==typeof e&&-1!==e.indexOf("%")?n/100*t:n}function f(e){var t=e[i].options,n=e.chart.canvas;if(n&&null!==n.offsetParent){e=n.getBoundingClientRect(),n=o(t.yOffset||0,e.height),t=o(t.xOffset||0,e.width);return 0<=e.right-t&&0<=e.bottom-n&&e.left+t<=window.innerWidth&&e.top+n<=window.innerHeight}}function l(e){var o=e.target[a];o.ticking||(o.ticking=!0,d(function(){for(var e,t=o.charts.slice(),n=t.length,r=0;r<n;++r)f(e=t[r])&&(s(e),e[i].appeared=!0,e.update());o.ticking=!1}))}function n(e){for(var t,n=e.chart.canvas.parentElement;n;)!function(e){if(e.nodeType!==Node.ELEMENT_NODE)return e.nodeType===Node.DOCUMENT_NODE;var t=r.getStyle(e,"overflow-x"),e=r.getStyle(e,"overflow-y");return"auto"===t||"scroll"===t||"auto"===e||"scroll"===e}(n)||(0===(t=(t=n[a]||(n[a]={})).charts||(t.charts=[])).length&&r.addEvent(n,"scroll",l),t.push(e),e[i].elements.push(n)),n=n.parentElement||n.ownerDocument}function s(n){n[i].elements.forEach(function(e){var t=e[a].charts;t.splice(t.indexOf(n),1),t.length||(r.removeEvent(e,"scroll",l),delete e[a])}),n[i].elements=[]}e.defaults.global.plugins.deferred={xOffset:0,yOffset:0,delay:0},e.plugins.register({id:"deferred",beforeInit:function(e,t){e[i]={options:t,appeared:!1,delayed:!1,loaded:!1,elements:[]},n(e)},beforeDatasetsUpdate:function(e,t){var n=e[i];if(!n.loaded){if(!n.appeared&&!f(e))return!1;if(n.appeared=!0,n.loaded=!0,s(e),0<t.delay)return n.delayed=!0,d(function(){e.ctx&&(n.delayed=!1,e.update())},t.delay),!1}if(n.delayed)return!1},destroy:function(e){s(e)}})});

View File

@ -12,6 +12,56 @@ catch (err) {
versions = [];
}
document.addEventListener('DOMContentLoaded', function () {
var toctreeToggles = document.querySelectorAll('.toctree-toggle');
toctreeToggles.forEach(function (toggle) {
toggle.addEventListener('click', function () {
rotateToggle(this);
});
var parentElement = toggle.parentElement;
if (!parentElement || !parentElement.parentElement || !parentElement.parentElement.classList.contains('current')) {
toggle.classList.add('rotate');
}
});
function rotateToggle(element) {
element.classList.toggle('rotate');
}
});
document.addEventListener('click', () => {
const ddMs = document.querySelectorAll('.dropdown-menu');
ddMs.forEach((dm) => {
dm.parentElement.classList.remove('show');
dm.classList.remove('show');
});
});
document.addEventListener('DOMContentLoaded', function () {
var dropdownButtons = document.querySelectorAll('.sst-btn');
dropdownButtons.forEach((ddBtn) => {
ddBtn.parentElement.classList.remove('show');
ddBtn.addEventListener('click', (e) => {
e.stopPropagation();
ddBtn.parentElement.classList.toggle('show');
showMenuToggle();
});
});
function showMenuToggle() {
const ddMs = document.querySelectorAll('.dropdown-menu');
ddMs.forEach((dm) => {
dm.parentElement.classList.contains('show')
? dm.classList.add('show')
: dm.classList.remove('show');
});
}
});
/* Adobe Analytics */
var wapLocalCode = 'us-en';
var wapSection = 'openvinotoolkit';
@ -25,6 +75,14 @@ var wapSection = 'openvinotoolkit';
s.appendChild(po);
})();
// legal notice for benchmarks
function addLegalNotice() {
if (window.location.href.indexOf('openvino_docs_performance_') !== -1) {
var legalNotice = $('<div class="opt-notice-wrapper"><p class="opt-notice">Results may vary. For workloads visit: <a href="openvino_docs_performance_benchmarks_faq.html#what-image-sizes-are-used-for-the-classification-network-models">workloads</a> and for configurations visit: <a href="openvino_docs_performance_benchmarks.html#platforms-configurations-methodology">configurations</a>. See also <a class="el" href="openvino_docs_Legal_Information.html">Legal Information</a>.</p></div>');
$('body').append(legalNotice);
}
}
$(document).ready(function () {
addFooter();
createVersions();
@ -34,6 +92,7 @@ $(document).ready(function () {
init_switchers();
handleSwitcherParam();
initViewerJS();
addLegalNotice();
updateSearchForm();
initBenchmarkPickers(); // included with the new benchmarks page
initCollapsibleHeaders(); // included with the new benchmarks page

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,26 +1,18 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Path setup --------------------------------------------------------------
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
import json
import shutil
from sphinx.util import logging
from json import JSONDecodeError
from sphinx.ext.autodoc import ClassDocumenter
# -- Project information -----------------------------------------------------
project = 'OpenVINO™'
copyright = '2024, Intel®'
author = 'Intel®'
@ -29,21 +21,18 @@ language = 'en'
version_name = 'nightly'
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx_inline_tabs',
'sphinx_copybutton',
'sphinx_panels',
'sphinx_design',
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'openvino_custom_sphinx_sitemap',
'myst_parser',
'breathe'
]
]
breathe_projects = {
"openvino": "../xml/"
@ -51,16 +40,19 @@ breathe_projects = {
myst_enable_extensions = ["colon_fence"]
myst_heading_anchors = 4
suppress_warnings = ['misc.highlighting_failure']
suppress_warnings = [
'misc.highlighting_failure',
'myst.xref_missing'
]
source_suffix = {
'.rst': 'restructuredtext',
'.md': 'markdown',
}
html_baseurl = ''
html_baseurl = 'https://docs.openvino.ai/canonical/'
# -- Sitemap configuration ---------------------------
# -- Sitemap configuration ---------------------------------------------------
sitemap_url_scheme = "{link}"
site_url = f'https://docs.openvino.ai/{version_name}/'
@ -78,8 +70,8 @@ ov_sitemap_meta = [
})
]
# ----------------------------------------------------
# ----------------------------------------------------
html_favicon = '_static/favicon.ico'
autodoc_default_flags = ['members']
@ -97,34 +89,37 @@ templates_path = ['_templates']
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
panels_add_bootstrap_css = False
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "openvino_sphinx_theme"
html_theme = 'openvino_sphinx_theme'
html_theme_path = ['_themes']
html_theme_options = {
"navigation_depth": 8,
"show_nav_level": 2,
"use_edit_page_button": True,
"github_url": "https://github.com/openvinotoolkit/openvino",
"footer_items": ["footer_info"],
# "footer_items": ["footer_info"],
"show_prev_next": False,
}
snippet_root = os.getenv("SNIPPET_ROOT", "")
html_sidebars = {
"**": ["search-field.html", "sidebar-nav-bs.html", "sidebar-ethical-ads.html"]
}
html_context = {
'current_language': 'English',
'languages': (('English', '/latest'), ('Chinese', '/cn/latest')),
'doxygen_mapping_file': '@DOXYGEN_MAPPING_FILE@',
'doxygen_snippet_root': snippet_root
'doxygen_snippet_root': snippet_root,
'default_mode': 'light'
}
repositories = {
@ -161,7 +156,7 @@ repositories = {
}
try:
doxygen_mapping_file = '@DOXYGEN_MAPPING_FILE@'
doxygen_mapping_file = os.path.dirname(os.getcwd()) + '/mapping.json'
with open(doxygen_mapping_file, 'r', encoding='utf-8') as f:
doxygen_mapping_file = json.load(f)
except JSONDecodeError:
@ -174,10 +169,43 @@ except FileNotFoundError:
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_css_files = [
'css/custom.css',
'css/openvino_sphinx_theme.css',
'css/button.css',
'css/input.css',
'css/textfield.css',
'css/tabs.css',
'css/coveo_custom.css',
'https://static.cloud.coveo.com/atomic/v2/themes/coveo.css',
'https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/css/splide.min.css',
]
html_js_files = [
'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js',
'https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js',
'https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels',
'https://cdnjs.cloudflare.com/ajax/libs/chartjs-plugin-annotation/0.5.7/chartjs-plugin-annotation.min.js',
'https://cdn.jsdelivr.net/npm/chartjs-plugin-barchart-background@1.3.0/build/Plugin.Barchart.Background.min.js',
'https://cdn.jsdelivr.net/npm/chartjs-plugin-deferred@1',
'https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.1/papaparse.min.js',
'js/openvino_sphinx_theme.js',
'js/splide.min.js',
'js/sortable_tables.js',
'js/graphs.js',
'js/graphs_ov_tf.js',
'js/gsearch.js',
'js/hide_banner.js',
'js/newsletter.js',
'js/open_sidebar.js',
'js/papaparse.min.js',
'js/viewer.min.js',
'js/custom.js',
]
# monkeypatch sphinx api doc to prevent showing inheritance from object and enum.Enum
add_line = ClassDocumenter.add_line
def add_line_no_base_object(self, line, *args, **kwargs):
if line.strip() in ['Bases: :class:`object`', 'Bases: :class:`enum.Enum`']:
return
@ -200,11 +228,6 @@ def autodoc_skip_member(app, what, name, obj, skip, options):
return name in exclude_pyapi_methods
shutil.copy("../../../docs/home.rst",".")
def replace_index_with_redirect(app,exception):
shutil.copy("../../../docs/index.html","../_build/index.html")
def replace_design_tabs_script(app, exception):
shutil.copy("../../../docs/sphinx_setup/_static/design-tabs.js","../_build/_static/design-tabs.js")
@ -215,10 +238,4 @@ def setup(app):
doxygen_mapping_file, rebuild=True)
app.add_config_value('repositories', repositories, rebuild=True)
app.connect('autodoc-skip-member', autodoc_skip_member)
app.connect('build-finished',replace_index_with_redirect)
app.connect('build-finished', replace_design_tabs_script)
app.add_js_file('js/custom.js')
app.add_js_file('js/graphs.js')
app.add_js_file('js/newsletter.js')
app.add_js_file('js/graphs_ov_tf.js')
app.add_js_file('js/open_sidebar.js')
# app.connect('build-finished', replace_design_tabs_script)

View File

@ -1,11 +1,186 @@
OpenVINO™ Documentation
=======================
============================
OpenVINO 2024.2
============================
.. meta::
:google-site-verification: _YqumYQ98cmXUTwtzM_0WIIadtDc6r_TMYGbmGgNvrk
**OpenVINO is an open-source toolkit** for optimizing and deploying deep learning models from cloud
to edge. It accelerates deep learning inference across various use cases, such as generative AI, video,
audio, and language with models from popular frameworks like PyTorch, TensorFlow, ONNX, and more.
Convert and optimize models, and deploy across a mix of Intel® hardware and environments, on-premises
and on-device, in the browser or in the cloud.
Check out the `OpenVINO Cheat Sheet. <https://docs.openvino.ai/2024/_static/download/OpenVINO_Quick_Start_Guide.pdf>`__
.. container::
:name: ov-homepage-banner
.. raw:: html
<link rel="stylesheet" type="text/css" href="_static/css/homepage_style.css">
<div class="line-block">
<section class="splide" aria-label="Splide Banner Carousel">
<div class="splide__track">
<ul class="splide__list">
<li id="ov-homepage-slide1" id class="splide__slide">
<p class="ov-homepage-slide-title">An open-source toolkit for optimizing and deploying deep learning models.</p>
<p class="ov-homepage-slide-subtitle">Boost your AI deep-learning inference performance!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/get-started.html">Learn more</a>
</li>
<li id="ov-homepage-slide2" class="splide__slide">
<p class="ov-homepage-slide-title">Better OpenVINO integration with PyTorch!</p>
<p class="ov-homepage-slide-subtitle">Use PyTorch models directly, without converting them first.</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/model-preparation/convert-model-pytorch.html">Learn more</a>
</li>
<li id="ov-homepage-slide3" class="splide__slide">
<p class="ov-homepage-slide-title">OpenVINO via PyTorch 2.0 torch.compile()</p>
<p class="ov-homepage-slide-subtitle">Use OpenVINO directly in PyTorch-native applications!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/torch-compile.html">Learn more</a>
</li>
<li id="ov-homepage-slide4" class="splide__slide">
<p class="ov-homepage-slide-title">Do you like Generative AI?</p>
<p class="ov-homepage-slide-subtitle">You will love how it performs with OpenVINO!</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/learn-openvino/interactive-tutorials-python.html">Check out our new notebooks</a>
</li>
<li id="ov-homepage-slide5" id class="splide__slide">
<p class="ov-homepage-slide-title">Boost your AI deep learning interface perfmormance.</p>
<p class="ov-homepage-slide-subtitle">Use Intel's open-source OpenVino toolkit for optimizing and deploying deep learning models.</p>
<a class="ov-homepage-banner-btn" href="https://docs.openvino.ai/2024/openvino-workflow/model-preparation/convert-model-pytorch.html">Learn more</a>
</li>
</ul>
</div>
</section>
</div>
|
|
.. image:: _static/images/openvino-overview-diagram.jpg
:align: center
:alt: openvino diagram
|
Places to Begin
++++++++++++++++++++++++++++
.. grid:: 2 2 3 3
:class-container: ov-homepage-higlight-grid
.. grid-item-card:: Installation
:img-top: ./_static/images/home_begin_tile_01.png
:class-card: homepage_begin_tile
This guide introduces installation and learning materials for Intel® Distribution of OpenVINO™ toolkit.
.. button-link:: get-started/install-openvino.html
:color: primary
:outline:
Get Started
.. grid-item-card:: Performance Benchmarks
:img-top: ./_static/images/home_begin_tile_02.png
:class-card: homepage_begin_tile
See latest benchmark numbers for OpenVINO and OpenVINO Model Server.
.. button-link:: about-openvino/performance-benchmarks.html
:color: primary
:outline:
View data
.. grid-item-card:: Framework Compatibility
:img-top: ./_static/images/home_begin_tile_03.png
:class-card: homepage_begin_tile
Load models directly (for TensorFlow, ONNX, PaddlePaddle) or convert to OpenVINO format.
.. button-link:: openvino-workflow/model-preparation.html
:color: primary
:outline:
Load your model
.. grid-item-card:: Easy Deployment
:img-top: ./_static/images/home_begin_tile_04.png
:class-card: homepage_begin_tile
Get started in just a few lines of code.
.. button-link:: openvino-workflow/running-inference.html
:color: primary
:outline:
Run Inference
.. grid-item-card:: Serving at scale
:img-top: ./_static/images/home_begin_tile_05.png
:class-card: homepage_begin_tile
Cloud-ready deployments for microservice applications.
.. button-link:: openvino-workflow/running-inference.html
:color: primary
:outline:
Try it out
.. grid-item-card:: Model Compression
:img-top: ./_static/images/home_begin_tile_06.png
:class-card: homepage_begin_tile
Reach for performance with post-training and training-time compression with NNCF.
.. button-link:: openvino-workflow/model-optimization.html
:color: primary
:outline:
Optimize now
|
Key Features
++++++++++++++++++++++++++++
.. grid:: 2 2 2 2
:class-container: homepage_begin_container
.. grid-item-card:: Model Compression
:img-top: ./_static/images/home_key_feature_01.png
:class-card: homepage_begin_key
You can either link directly with OpenVINO Runtime to run inference locally or use OpenVINO Model Server to serve model inference from a separate server or within Kubernetes environment.
.. grid-item-card:: Fast & Scalable Deployment
:img-top: ./_static/images/home_key_feature_02.png
:class-card: homepage_begin_key
Write an application once, deploy it anywhere, achieving maximum performance from hardware. Automatic device discovery allows for superior deployment flexibility. OpenVINO Runtime supports Linux, Windows and MacOS and provides Python, C++ and C API. Use your preferred language and OS.
.. grid-item-card:: Lighter Deployment
:img-top: ./_static/images/home_key_feature_03.png
:class-card: homepage_begin_key
Designed with minimal external dependencies reduces the application footprint, simplifying installation and dependency management. Popular package managers enable application dependencies to be easily installed and upgraded. Custom compilation for your specific model(s) further reduces final binary size.
.. grid-item-card:: Enhanced App Start-Up Time
:img-top: ./_static/images/home_key_feature_04.png
:class-card: homepage_begin_key
In applications where fast start-up is required, OpenVINO significantly reduces first-inference latency by using the CPU for initial inference and then switching to another device once the model has been compiled and loaded to memory. Compiled models are cached, improving start-up time even more.
.. toctree::
:maxdepth: 2
:hidden:
home
Install <https://docs.openvino.ai/install>
Blog <https://blog.openvino.ai/>
Forum <https://community.intel.com/t5/Intel-Distribution-of-OpenVINO/bd-p/distribution-openvino-toolkit>
Support <https://www.intel.com/content/www/us/en/support/products/96066/software/development-software/openvino-toolkit.html>
GitHub <https://github.com/openvinotoolkit>
GET STARTED <get-started>
LEARN OPENVINO <learn-openvino>
OPENVINO WORKFLOW <openvino-workflow>
DOCUMENTATION <documentation>
ABOUT OPENVINO <about-openvino>