Christian Goll
706aa7d839
OBS-URL: https://build.opensuse.org/package/show/science:machinelearning/python-torch?expand=0&rev=9
1805 lines
196 KiB
HTML
1805 lines
196 KiB
HTML
|
||
|
||
|
||
|
||
|
||
|
||
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="dns-prefetch" href="https://github.githubassets.com">
|
||
<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
|
||
<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
|
||
<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
|
||
<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
|
||
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
|
||
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
|
||
|
||
|
||
|
||
<link crossorigin="anonymous" media="all" integrity="sha512-ZUjVod2EvYMDbGqRSyW0rpfgBq3i+gnR/4PfrzLsy5f20oIcRfgFQFVKgi3Ztp917bP1K/kdP5q8+nAlJ3+cFA==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-6548d5a1dd84bd83036c6a914b25b4ae.css" />
|
||
<link crossorigin="anonymous" media="all" integrity="sha512-0apm5h9SeiFvZrJ0BaPTNTzOkspSjFSFjXCzjZXuaboPWLUxvVT8mHrK/ASlS9tGw+Zz3KGhgeH22hhMesL0tA==" rel="stylesheet" href="https://github.githubassets.com/assets/site-d1aa66e61f527a216f66b27405a3d335.css" />
|
||
<link crossorigin="anonymous" media="all" integrity="sha512-aX4OkLpzulpadvOncEEPpJZnQyeKNm2npzJowbL5JxptkoZXNPPy61R059xmEa3YyVF4Y4YXB6g+5o08uvdWpA==" rel="stylesheet" href="https://github.githubassets.com/assets/github-697e0e90ba73ba5a5a76f3a770410fa4.css" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="viewport" content="width=device-width">
|
||
|
||
<title>Release Mobile build customization, Distributed model parallel training, Java bindings, and more · pytorch/pytorch · GitHub</title>
|
||
<meta name="description" content="Tensors and Dynamic neural networks in Python with strong GPU acceleration - pytorch/pytorch">
|
||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
|
||
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
|
||
<meta property="fb:app_id" content="1401488693436528">
|
||
|
||
<meta name="twitter:image:src" content="https://avatars2.githubusercontent.com/u/21003710?s=400&v=4" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="pytorch/pytorch" /><meta name="twitter:description" content="Tensors and Dynamic neural networks in Python with strong GPU acceleration - pytorch/pytorch" />
|
||
<meta property="og:image" content="https://avatars2.githubusercontent.com/u/21003710?s=400&v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="pytorch/pytorch" /><meta property="og:url" content="https://github.com/pytorch/pytorch" /><meta property="og:description" content="Tensors and Dynamic neural networks in Python with strong GPU acceleration - pytorch/pytorch" />
|
||
|
||
<link rel="assets" href="https://github.githubassets.com/">
|
||
|
||
|
||
|
||
<meta name="request-id" content="822A:1C8E:A61383:F70953:5E5512D7" data-pjax-transient="true"/><meta name="html-safe-nonce" content="8d960ca85fdd393734511ddc47c0c1236b73595b" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MjJBOjFDOEU6QTYxMzgzOkY3MDk1Mzo1RTU1MTJENyIsInZpc2l0b3JfaWQiOiIyMjAyNDgxMDk2NjQ5OTM3NjIzIiwicmVnaW9uX2VkZ2UiOiJhbXMiLCJyZWdpb25fcmVuZGVyIjoiYW1zIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="7ffe5e2fac05ac1e381862825ac91fcafb0acc4d559bbd2a18b35fb8444037cc" data-pjax-transient="true"/>
|
||
|
||
|
||
|
||
<meta name="github-keyboard-shortcuts" content="repository" data-pjax-transient="true" />
|
||
|
||
|
||
|
||
<meta name="selected-link" value="repo_releases" data-pjax-transient>
|
||
|
||
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
|
||
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
|
||
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
|
||
|
||
<meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-ga_id" content="" class="js-octo-ga-id" />
|
||
<meta name="analytics-location" content="/<user-name>/<repo-name>/releases/show" data-pjax-transient="true" />
|
||
|
||
|
||
|
||
<meta name="google-analytics" content="UA-3769691-2">
|
||
|
||
|
||
<meta class="js-ga-set" name="dimension1" content="Logged Out">
|
||
|
||
|
||
|
||
|
||
|
||
<meta name="hostname" content="github.com">
|
||
<meta name="user-login" content="">
|
||
|
||
<meta name="expected-hostname" content="github.com">
|
||
|
||
|
||
<meta name="enabled-features" content="MARKETPLACE_FEATURED_BLOG_POSTS,MARKETPLACE_INVOICED_BILLING,MARKETPLACE_SOCIAL_PROOF_CUSTOMERS,MARKETPLACE_TRENDING_SOCIAL_PROOF,MARKETPLACE_RECOMMENDATIONS,MARKETPLACE_PENDING_INSTALLATIONS,RELATED_ISSUES">
|
||
|
||
<meta http-equiv="x-pjax-version" content="9f8e8c1805956d93c0f4a133eb96c5e3">
|
||
|
||
|
||
<link href="https://github.com/pytorch/pytorch/commits/v1.4.0.atom" rel="alternate" title="Recent Commits to pytorch:v1.4.0" type="application/atom+xml">
|
||
|
||
<meta name="go-import" content="github.com/pytorch/pytorch git https://github.com/pytorch/pytorch.git">
|
||
|
||
<meta name="octolytics-dimension-user_id" content="21003710" /><meta name="octolytics-dimension-user_login" content="pytorch" /><meta name="octolytics-dimension-repository_id" content="65600975" /><meta name="octolytics-dimension-repository_nwo" content="pytorch/pytorch" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="65600975" /><meta name="octolytics-dimension-repository_network_root_nwo" content="pytorch/pytorch" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
|
||
|
||
|
||
|
||
|
||
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
|
||
|
||
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
|
||
|
||
<link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
|
||
<link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://github.githubassets.com/favicon.ico">
|
||
|
||
<meta name="theme-color" content="#1e2327">
|
||
|
||
|
||
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
|
||
|
||
</head>
|
||
|
||
<body class="logged-out env-production page-responsive">
|
||
|
||
|
||
<div class="position-relative js-header-wrapper ">
|
||
<a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
|
||
<span class="Progress progress-pjax-loader position-fixed width-full js-pjax-loader-bar">
|
||
<span class="progress-pjax-loader-bar top-0 left-0" style="width: 0%;"></span>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner">
|
||
<div class="container-lg d-lg-flex flex-items-center p-responsive">
|
||
<div class="d-flex flex-justify-between flex-items-center">
|
||
<a class="mr-4" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
|
||
<svg height="32" class="octicon octicon-mark-github text-white" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
|
||
</a>
|
||
|
||
<div class="d-lg-none css-truncate css-truncate-target width-fit p-2">
|
||
|
||
<svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||
<a class="Header-link" href="/pytorch">pytorch</a>
|
||
/
|
||
<a class="Header-link" href="/pytorch/pytorch">pytorch</a>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="d-flex flex-items-center">
|
||
<a href="/join?source=header-repo"
|
||
class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5"
|
||
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="863e18c2979ddfc1396119bf0cb35b4132343e264de755b56eec9a32975ce94a"
|
||
data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
|
||
Sign up
|
||
</a>
|
||
|
||
<button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
|
||
<svg height="24" class="octicon octicon-three-bars text-white" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto">
|
||
<div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3">
|
||
<button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
|
||
<svg height="24" class="octicon octicon-x text-gray" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||
</button>
|
||
</div>
|
||
|
||
<nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global">
|
||
<ul class="d-lg-flex list-style-none">
|
||
<li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
|
||
<details class="HeaderMenu-details details-overlay details-reset width-full">
|
||
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
|
||
Why GitHub?
|
||
<svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
|
||
<path d="M1,1l6.2,6L13,1"></path>
|
||
</svg>
|
||
</summary>
|
||
<div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
|
||
<a href="/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a>
|
||
<ul class="list-style-none f5 pb-3">
|
||
<li class="edge-item-fix"><a href="/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li>
|
||
<li class="edge-item-fix"><a href="/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li>
|
||
<li class="edge-item-fix"><a href="/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li>
|
||
<li class="edge-item-fix"><a href="/features/actions" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Actions">Actions</a></li>
|
||
<li class="edge-item-fix"><a href="/features/packages" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Packages">Packages</a></li>
|
||
<li class="edge-item-fix"><a href="/features/security" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Security">Security</a></li>
|
||
<li class="edge-item-fix"><a href="/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li>
|
||
<li class="edge-item-fix"><a href="/features#hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Hosting</a></li>
|
||
</ul>
|
||
|
||
<ul class="list-style-none mb-0 border-lg-top pt-lg-3">
|
||
<li class="edge-item-fix"><a href="/customer-stories" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Customer stories">Customer stories <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
|
||
<li class="edge-item-fix"><a href="/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
<li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
|
||
<a href="/enterprise" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a>
|
||
</li>
|
||
|
||
<li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
|
||
<details class="HeaderMenu-details details-overlay details-reset width-full">
|
||
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
|
||
Explore
|
||
<svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
|
||
<path d="M1,1l6.2,6L13,1"></path>
|
||
</svg>
|
||
</summary>
|
||
|
||
<div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
|
||
<ul class="list-style-none mb-3">
|
||
<li class="edge-item-fix"><a href="/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Explore">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
|
||
</ul>
|
||
|
||
<h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn & contribute</h4>
|
||
<ul class="list-style-none mb-3">
|
||
<li class="edge-item-fix"><a href="/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li>
|
||
<li class="edge-item-fix"><a href="/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li>
|
||
<li class="edge-item-fix"><a href="/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li>
|
||
<li class="edge-item-fix"><a href="https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li>
|
||
<li class="edge-item-fix"><a href="https://opensource.guide" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li>
|
||
</ul>
|
||
|
||
<h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4>
|
||
<ul class="list-style-none mb-0">
|
||
<li class="edge-item-fix"><a href="https://github.com/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li>
|
||
<li class="edge-item-fix"><a href="https://github.community" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li>
|
||
<li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
|
||
<li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
|
||
<a href="/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a>
|
||
</li>
|
||
|
||
<li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
|
||
<details class="HeaderMenu-details details-overlay details-reset width-full">
|
||
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
|
||
Pricing
|
||
<svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
|
||
<path d="M1,1l6.2,6L13,1"></path>
|
||
</svg>
|
||
</summary>
|
||
|
||
<div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
|
||
<a href="/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a>
|
||
|
||
<ul class="list-style-none mb-3">
|
||
<li class="edge-item-fix"><a href="/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Compare plans">Compare plans</a></li>
|
||
<li class="edge-item-fix"><a href="https://enterprise.github.com/contact" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Contact Sales">Contact Sales</a></li>
|
||
</ul>
|
||
|
||
<ul class="list-style-none mb-0 border-lg-top pt-lg-3">
|
||
<li class="edge-item-fix"><a href="/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
|
||
<li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
|
||
<div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left">
|
||
<div class="d-lg-flex mb-3 mb-lg-0">
|
||
<div class="header-search flex-self-stretch flex-lg-self-auto mr-0 mr-lg-3 mb-3 mb-lg-0 scoped-search site-scoped-search js-site-search position-relative js-jump-to"
|
||
role="combobox"
|
||
aria-owns="jump-to-results"
|
||
aria-label="Search or jump to"
|
||
aria-haspopup="listbox"
|
||
aria-expanded="false"
|
||
>
|
||
<div class="position-relative">
|
||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="65600975" data-scoped-search-url="/pytorch/pytorch/search" data-unscoped-search-url="/search" action="/pytorch/pytorch/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
|
||
<label class="form-control input-sm header-search-wrapper p-0 header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
|
||
<input type="text"
|
||
class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
|
||
data-hotkey="s,/"
|
||
name="q"
|
||
value=""
|
||
placeholder="Search"
|
||
data-unscoped-placeholder="Search GitHub"
|
||
data-scoped-placeholder="Search"
|
||
autocapitalize="off"
|
||
aria-autocomplete="list"
|
||
aria-controls="jump-to-results"
|
||
aria-label="Search"
|
||
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
|
||
spellcheck="false"
|
||
autocomplete="off"
|
||
>
|
||
<input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="9OZJorrZR+l+C6dHotIejT6CTTpLese+sWCYVgCE2/CoSoqHVzI00/9aCIkdrSvAPbnDLGbLH9VdZImIHe+mVQ==" />
|
||
<input type="hidden" class="js-site-search-type-field" name="type" >
|
||
<img src="https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
|
||
|
||
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
|
||
|
||
<ul class="d-none js-jump-to-suggestions-template-container">
|
||
|
||
|
||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
|
||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 00-1 1v14a1 1 0 001 1h13a1 1 0 001-1V1a1 1 0 00-1-1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0013 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 000-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||
</div>
|
||
|
||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||
|
||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||
</div>
|
||
|
||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||
In this repository
|
||
</span>
|
||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||
All GitHub
|
||
</span>
|
||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
|
||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||
Jump to
|
||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
<ul class="d-none js-jump-to-no-results-template-container">
|
||
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
|
||
<span class="text-gray">No suggested jump to results</span>
|
||
</li>
|
||
</ul>
|
||
|
||
<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
|
||
|
||
|
||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
|
||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 00-1 1v14a1 1 0 001 1h13a1 1 0 001-1V1a1 1 0 00-1-1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0013 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 000-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||
</div>
|
||
|
||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||
|
||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||
</div>
|
||
|
||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||
In this repository
|
||
</span>
|
||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||
All GitHub
|
||
</span>
|
||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
|
||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||
Jump to
|
||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
|
||
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
|
||
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
|
||
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 00-1 1v14a1 1 0 001 1h13a1 1 0 001-1V1a1 1 0 00-1-1z"/></svg>
|
||
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0013 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 000-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
|
||
</div>
|
||
|
||
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
|
||
|
||
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
|
||
</div>
|
||
|
||
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
|
||
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
|
||
In this repository
|
||
</span>
|
||
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
|
||
All GitHub
|
||
</span>
|
||
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
|
||
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
|
||
Jump to
|
||
<span class="d-inline-block ml-1 v-align-middle">↵</span>
|
||
</div>
|
||
</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
|
||
</div>
|
||
</label>
|
||
</form> </div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<a href="/login?return_to=%2Fpytorch%2Fpytorch%2Freleases%2Ftag%2Fv1.4.0"
|
||
class="HeaderMenu-link no-underline mr-3"
|
||
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="548e069e059b0c9c0a340f94a5c84d876545faedc7c42820fd8610eef7b84e29"
|
||
data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
|
||
Sign in
|
||
</a>
|
||
<a href="/join?source=header-repo&source_repo=pytorch%2Fpytorch"
|
||
class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1"
|
||
data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="548e069e059b0c9c0a340f94a5c84d876545faedc7c42820fd8610eef7b84e29"
|
||
data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
|
||
Sign up
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
</div>
|
||
|
||
<div id="start-of-content" class="show-on-focus"></div>
|
||
|
||
|
||
<div id="js-flash-container">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
|
||
|
||
|
||
|
||
|
||
<div class="application-main " data-commit-hovercards-enabled>
|
||
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
|
||
<main >
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="pagehead repohead hx_repohead readability-menu bg-gray-light pb-0 pt-0 pt-lg-3">
|
||
|
||
<div class="container-lg mb-4 p-responsive d-none d-lg-flex">
|
||
|
||
<div class="flex-auto min-width-0 width-fit mr-3">
|
||
<h1 class="public d-flex flex-wrap flex-items-center break-word float-none ">
|
||
<svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||
<span class="author ml-1 flex-self-stretch" itemprop="author">
|
||
<a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/pytorch/hovercard" href="/pytorch">pytorch</a>
|
||
</span>
|
||
<span class="path-divider flex-self-stretch">/</span>
|
||
<strong itemprop="name" class="mr-2 flex-self-stretch">
|
||
<a data-pjax="#js-repo-pjax-container" href="/pytorch/pytorch">pytorch</a>
|
||
</strong>
|
||
|
||
</h1>
|
||
|
||
|
||
</div>
|
||
|
||
<ul class="pagehead-actions flex-shrink-0" >
|
||
|
||
|
||
|
||
|
||
<li>
|
||
|
||
<a class="tooltipped tooltipped-s btn btn-sm btn-with-count" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="eb7524d3dbf49a26aabafa6ea7d7578312197393346528f885d2d9b112d07c4c" href="/login?return_to=%2Fpytorch%2Fpytorch">
|
||
<svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||
Watch
|
||
</a> <a class="social-count" href="/pytorch/pytorch/watchers"
|
||
aria-label="1414 users are watching this repository">
|
||
1.4k
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":65600975,"auth_type":"LOG_IN","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="a5800bbd29025cdfd6702543bfbf33496d63c7e17cbad136f7148ab7d58814fd" href="/login?return_to=%2Fpytorch%2Fpytorch">
|
||
<svg aria-label="star" height="16" class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" role="img"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
|
||
|
||
Star
|
||
</a>
|
||
<a class="social-count js-social-count" href="/pytorch/pytorch/stargazers"
|
||
aria-label="36355 users starred this repository">
|
||
36.4k
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
<a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to fork a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":65600975,"auth_type":"LOG_IN","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="b7a573253e08323aea70d5ec1210d68712f20e7b5039c2c5d84f8d5a6ae8b003" href="/login?return_to=%2Fpytorch%2Fpytorch">
|
||
<svg class="octicon octicon-repo-forked v-align-text-bottom" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 00-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 002 1a1.993 1.993 0 00-1 3.72V6.5l3 3v1.78A1.993 1.993 0 005 15a1.993 1.993 0 001-3.72V9.5l3-3V4.72A1.993 1.993 0 008 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||
Fork
|
||
</a>
|
||
<a href="/pytorch/pytorch/network/members" class="social-count"
|
||
aria-label="9177 users forked this repository">
|
||
9.2k
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
<nav class="hx_reponav reponav js-repo-nav js-sidenav-container-pjax clearfix container-lg p-responsive d-none d-lg-block"
|
||
itemscope
|
||
itemtype="http://schema.org/BreadcrumbList"
|
||
aria-label="Repository"
|
||
data-pjax="#js-repo-pjax-container">
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /pytorch/pytorch/tree/v1.4.0" href="/pytorch/pytorch/tree/v1.4.0">
|
||
<div class="d-inline"><svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg></div>
|
||
<span itemprop="name">Code</span>
|
||
<meta itemprop="position" content="1">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /pytorch/pytorch/issues" href="/pytorch/pytorch/issues">
|
||
<div class="d-inline"><svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 011.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></div>
|
||
<span itemprop="name">Issues</span>
|
||
<span class="Counter">3,890</span>
|
||
<meta itemprop="position" content="2">
|
||
</a> </span>
|
||
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a data-hotkey="g p" data-skip-pjax="true" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /pytorch/pytorch/pulls" href="/pytorch/pytorch/pulls">
|
||
<div class="d-inline"><svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0010 15a1.993 1.993 0 001-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 00-1 3.72v6.56A1.993 1.993 0 002 15a1.993 1.993 0 001-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg></div>
|
||
<span itemprop="name">Pull requests</span>
|
||
<span class="Counter">1,216</span>
|
||
<meta itemprop="position" content="4">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement" class="position-relative float-left">
|
||
<a data-hotkey="g w" data-skip-pjax="true" class="js-selected-navigation-item reponav-item" data-selected-links="repo_actions /pytorch/pytorch/actions" href="/pytorch/pytorch/actions">
|
||
<div class="d-inline"><svg class="octicon octicon-play" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 8A7 7 0 110 8a7 7 0 0114 0zm-8.223 3.482l4.599-3.066a.5.5 0 000-.832L5.777 4.518A.5.5 0 005 4.934v6.132a.5.5 0 00.777.416z"/></svg></div>
|
||
Actions
|
||
</a>
|
||
</span>
|
||
|
||
<a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /pytorch/pytorch/projects" href="/pytorch/pytorch/projects">
|
||
<div class="d-inline"><svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 00-1 1v14a1 1 0 001 1h13a1 1 0 001-1V1a1 1 0 00-1-1z"/></svg></div>
|
||
Projects
|
||
<span class="Counter">5</span>
|
||
</a>
|
||
<a class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /pytorch/pytorch/wiki" href="/pytorch/pytorch/wiki">
|
||
<div class="d-inline"><svg class="octicon octicon-book" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"/></svg></div>
|
||
Wiki
|
||
</a>
|
||
<a data-skip-pjax="true" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy token_scanning code_scanning /pytorch/pytorch/security/advisories" href="/pytorch/pytorch/security/advisories">
|
||
<div class="d-inline"><svg class="octicon octicon-shield" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 2l7-2 7 2v6.02C14 12.69 8.69 16 7 16c-1.69 0-7-3.31-7-7.98V2zm1 .75L7 1l6 1.75v5.268C13 12.104 8.449 15 7 15c-1.449 0-6-2.896-6-6.982V2.75zm1 .75L7 2v12c-1.207 0-5-2.482-5-5.985V3.5z"/></svg></div>
|
||
Security
|
||
</a>
|
||
<a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse people /pytorch/pytorch/pulse" href="/pytorch/pytorch/pulse">
|
||
<div class="d-inline"><svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg></div>
|
||
Insights
|
||
</a>
|
||
|
||
</nav>
|
||
|
||
<div class="reponav-wrapper reponav-small d-lg-none">
|
||
<nav class="reponav js-reponav text-center no-wrap"
|
||
itemscope
|
||
itemtype="http://schema.org/BreadcrumbList">
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a class="js-selected-navigation-item selected reponav-item" itemprop="url" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /pytorch/pytorch/tree/v1.4.0" href="/pytorch/pytorch/tree/v1.4.0">
|
||
<span itemprop="name">Code</span>
|
||
<meta itemprop="position" content="1">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /pytorch/pytorch/issues" href="/pytorch/pytorch/issues">
|
||
<span itemprop="name">Issues</span>
|
||
<span class="Counter">3,890</span>
|
||
<meta itemprop="position" content="2">
|
||
</a> </span>
|
||
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /pytorch/pytorch/pulls" href="/pytorch/pytorch/pulls">
|
||
<span itemprop="name">Pull requests</span>
|
||
<span class="Counter">1,216</span>
|
||
<meta itemprop="position" content="4">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /pytorch/pytorch/projects" href="/pytorch/pytorch/projects">
|
||
<span itemprop="name">Projects</span>
|
||
<span class="Counter">5</span>
|
||
<meta itemprop="position" content="5">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_actions /pytorch/pytorch/actions" href="/pytorch/pytorch/actions">
|
||
<span itemprop="name">Actions</span>
|
||
<meta itemprop="position" content="6">
|
||
</a> </span>
|
||
|
||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_wiki /pytorch/pytorch/wiki" href="/pytorch/pytorch/wiki">
|
||
<span itemprop="name">Wiki</span>
|
||
<meta itemprop="position" content="7">
|
||
</a> </span>
|
||
|
||
<a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy token_scanning code_scanning /pytorch/pytorch/security/advisories" href="/pytorch/pytorch/security/advisories">
|
||
<span itemprop="name">Security</span>
|
||
<meta itemprop="position" content="8">
|
||
</a>
|
||
<a class="js-selected-navigation-item reponav-item" data-selected-links="pulse /pytorch/pytorch/pulse" href="/pytorch/pytorch/pulse">
|
||
Pulse
|
||
</a>
|
||
|
||
</nav>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
|
||
|
||
|
||
<div class="container-lg clearfix new-discussion-timeline p-responsive">
|
||
<div class="repository-content ">
|
||
|
||
|
||
|
||
<div class="container-lg js-signup-prompt" data-prompt="releases" hidden>
|
||
<div class="signup-prompt signup-prompt-paper mx-auto mb-6 p-4 border rounded-2"
|
||
style="background-image: url('https://github.githubassets.com/images/modules/site/heroes/octocat-paper.svg')">
|
||
<div class="position-relative">
|
||
<button type="button"
|
||
class="position-absolute top-0 right-0 py-1 px-2 border bg-white btn-link link-gray no-underline f6 js-signup-prompt-button"
|
||
data-ga-click="(Logged out) Sign up prompt, click, text:Dismiss"
|
||
data-ga-load="Release, view, type:redesigned sign up prompt">
|
||
Dismiss
|
||
</button>
|
||
<h3 class="col-6 col-md-12 mb-2 lh-condensed">Stay up to date on releases</h3>
|
||
<p class="col-md-6 col-lg-7">
|
||
Create your free account today to subscribe to this repository for
|
||
notifications about new releases, and build software alongside
|
||
40 million developers on GitHub.
|
||
</p>
|
||
<a class="btn btn-primary mr-2" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"projects signup prompt","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/pytorch/pytorch/releases/tag/v1.4.0","user_id":null}}" data-hydro-click-hmac="d31d3e9e2573d701f101600f435c9bd63827ceee9f25e810400cc7d0eca7e5d4" data-ga-click="(Logged out) Sign up prompt, click, text:Sign up for free" data-ga-load="Release, view, type:redesigned sign up prompt" href="/join?source=prompt-releases-show">Sign up for free</a>
|
||
<a href="/pricing"
|
||
class="d-block d-sm-inline-block mt-2 mt-sm-0"
|
||
data-ga-click="(Logged out) Sign up prompt, click, text:See pricing for teams and enterprises"
|
||
data-ga-load="Release, view, type:redesigned sign up prompt">
|
||
See pricing for teams and enterprises
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="subnav">
|
||
<div class="d-flex flex-md-row flex-justify-between flex-md-items-center">
|
||
<div class="subnav-links float-left" role="navigation">
|
||
<a class="js-selected-navigation-item selected subnav-item" aria-current="page" data-selected-links="repo_releases /pytorch/pytorch/releases" href="/pytorch/pytorch/releases">Releases</a>
|
||
<a class="js-selected-navigation-item subnav-item" data-selected-links="repo_tags /pytorch/pytorch/tags" href="/pytorch/pytorch/tags">Tags</a>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="border-top">
|
||
|
||
<div class="release pt-2 pt-md-0 pb-3 pb-md-0 clearfix label-latest">
|
||
<div class="d-none d-md-block flex-wrap flex-items-center col-12 col-md-3 col-lg-2 px-md-3 pb-1 pb-md-4 pt-md-4 float-left text-md-right v-align-top">
|
||
<div class="flex-auto flex-self-start">
|
||
<span class="flex-shrink-0 Label Label--outline mb-md-2 mr-2 mr-md-0 Label--outline-green">
|
||
<a class="border-0 Label--outline-green" href="/pytorch/pytorch/releases/latest">Latest release</a>
|
||
</span>
|
||
|
||
|
||
</div>
|
||
|
||
<ul class="d-none d-md-block mt-2 list-style-none">
|
||
<li class="d-block mb-1">
|
||
<a href="/pytorch/pytorch/tree/v1.4.0" class="muted-link css-truncate" title="v1.4.0">
|
||
<svg class="octicon octicon-tag" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.73 1.73C7.26 1.26 6.62 1 5.96 1H3.5C2.13 1 1 2.13 1 3.5v2.47c0 .66.27 1.3.73 1.77l6.06 6.06c.39.39 1.02.39 1.41 0l4.59-4.59a.996.996 0 000-1.41L7.73 1.73zM2.38 7.09c-.31-.3-.47-.7-.47-1.13V3.5c0-.88.72-1.59 1.59-1.59h2.47c.42 0 .83.16 1.13.47l6.14 6.13-4.73 4.73-6.13-6.15zM3.01 3h2v2H3V3h.01z"/></svg>
|
||
<span class="css-truncate-target" style="max-width: 125px">v1.4.0</span>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="d-block mb-1">
|
||
<a href="/pytorch/pytorch/commit/7f73f1d591afba823daa4a99a939217fb54d7688" class="muted-link">
|
||
<svg class="octicon octicon-git-commit" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.86 7c-.45-1.72-2-3-3.86-3-1.86 0-3.41 1.28-3.86 3H0v2h3.14c.45 1.72 2 3 3.86 3 1.86 0 3.41-1.28 3.86-3H14V7h-3.14zM7 10.2c-1.22 0-2.2-.98-2.2-2.2 0-1.22.98-2.2 2.2-2.2 1.22 0 2.2.98 2.2 2.2 0 1.22-.98 2.2-2.2 2.2z"/></svg>
|
||
<code>7f73f1d</code>
|
||
</a>
|
||
</li>
|
||
<li class="d-block mb-1">
|
||
|
||
|
||
</li>
|
||
<li class="mt-3">
|
||
|
||
<details class="details-reset details-overlay select-menu" id="tag-select-menu-470c6a20-57ca-11ea-9d1b-fc5f8cc81997">
|
||
<summary class="btn btn-sm select-menu-button text-md-left" title="Compare">
|
||
<i>Compare</i>
|
||
</summary>
|
||
|
||
<details-menu class="select-menu-modal position-absolute text-md-left" style="z-index: 99;">
|
||
<div class="select-menu-header">
|
||
<span class="select-menu-title">Choose a tag to compare</span>
|
||
</div>
|
||
|
||
<div class="select-menu-filters">
|
||
<remote-input class="select-menu-text-filter"
|
||
src="/pytorch/pytorch/compare/tag-list?range=v1.4.0&tag_name=v1.4.0&type=base"
|
||
aria-owns="tags-menu-470c6a20-57ca-11ea-9d1b-fc5f8cc81997">
|
||
<input type="text" class="form-control" aria-label="Find a tag" placeholder="Find a tag" autofocus>
|
||
</remote-input>
|
||
</div>
|
||
|
||
<div class="select-menu-list" id="tags-menu-470c6a20-57ca-11ea-9d1b-fc5f8cc81997">
|
||
<div class="p-2">Search for a tag</div>
|
||
</div>
|
||
</details-menu>
|
||
</details>
|
||
|
||
</li>
|
||
</ul>
|
||
</div><!-- /.meta -->
|
||
|
||
<div class="col-12 col-md-9 col-lg-10 px-md-3 py-md-4 release-main-section commit open float-left">
|
||
<div class="release-header">
|
||
<div class="d-flex flex-items-start">
|
||
<div class="f1 flex-auto min-width-0 text-normal">
|
||
<a href="/pytorch/pytorch/releases/tag/v1.4.0">Mobile build customization, Distributed model parallel training, Java bindings, and more</a>
|
||
</div>
|
||
|
||
<span class="d-md-none flex-shrink-0 ml-2 mt-2 mt-md-0 Label Label--outline Label--outline-green">
|
||
<a class="border-0 Label--outline-green" href="/pytorch/pytorch/releases/latest">Latest release</a>
|
||
</span>
|
||
|
||
</div>
|
||
<ul class="d-flex d-md-none flex-items-center mb-1 list-style-none">
|
||
<li class="d-block mr-2">
|
||
<a href="/pytorch/pytorch/tree/v1.4.0" class="muted-link css-truncate" title="v1.4.0">
|
||
<svg class="octicon octicon-tag" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.73 1.73C7.26 1.26 6.62 1 5.96 1H3.5C2.13 1 1 2.13 1 3.5v2.47c0 .66.27 1.3.73 1.77l6.06 6.06c.39.39 1.02.39 1.41 0l4.59-4.59a.996.996 0 000-1.41L7.73 1.73zM2.38 7.09c-.31-.3-.47-.7-.47-1.13V3.5c0-.88.72-1.59 1.59-1.59h2.47c.42 0 .83.16 1.13.47l6.14 6.13-4.73 4.73-6.13-6.15zM3.01 3h2v2H3V3h.01z"/></svg>
|
||
<span class="css-truncate-target" style="max-width: 125px">v1.4.0</span>
|
||
</a>
|
||
</li>
|
||
|
||
<li class="d-block mr-2 flex-auto">
|
||
<a href="/pytorch/pytorch/commit/7f73f1d591afba823daa4a99a939217fb54d7688" class="muted-link">
|
||
<svg class="octicon octicon-git-commit" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10.86 7c-.45-1.72-2-3-3.86-3-1.86 0-3.41 1.28-3.86 3H0v2h3.14c.45 1.72 2 3 3.86 3 1.86 0 3.41-1.28 3.86-3H14V7h-3.14zM7 10.2c-1.22 0-2.2-.98-2.2-2.2 0-1.22.98-2.2 2.2-2.2 1.22 0 2.2.98 2.2 2.2 0 1.22-.98 2.2-2.2 2.2z"/></svg>
|
||
<code>7f73f1d</code>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
|
||
<details class="details-reset details-overlay select-menu" id="tag-select-menu-470c9400-57ca-11ea-8ba3-4ff4e55a1401">
|
||
<summary class="btn btn-sm select-menu-button text-md-left" title="Compare">
|
||
<i>Compare</i>
|
||
</summary>
|
||
|
||
<details-menu class="select-menu-modal position-absolute text-md-left" style="z-index: 99;">
|
||
<div class="select-menu-header">
|
||
<span class="select-menu-title">Choose a tag to compare</span>
|
||
</div>
|
||
|
||
<div class="select-menu-filters">
|
||
<remote-input class="select-menu-text-filter"
|
||
src="/pytorch/pytorch/compare/tag-list?range=v1.4.0&tag_name=v1.4.0&type=base"
|
||
aria-owns="tags-menu-470c9400-57ca-11ea-8ba3-4ff4e55a1401">
|
||
<input type="text" class="form-control" aria-label="Find a tag" placeholder="Find a tag" autofocus>
|
||
</remote-input>
|
||
</div>
|
||
|
||
<div class="select-menu-list" id="tags-menu-470c9400-57ca-11ea-8ba3-4ff4e55a1401">
|
||
<div class="p-2">Search for a tag</div>
|
||
</div>
|
||
</details-menu>
|
||
</details>
|
||
|
||
</li>
|
||
<li>
|
||
|
||
|
||
</li>
|
||
</ul>
|
||
|
||
<p class="f5 text-gray mt-2 mt-md-1 mb-2 mb-md-4">
|
||
<a class="d-inline-block" data-hovercard-type="user" data-hovercard-url="/users/nairbv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/nairbv"><img class="avatar" src="https://avatars1.githubusercontent.com/u/582713?s=40&v=4" width="20" height="20" alt="@nairbv" /></a>
|
||
<a class="text-bold text-gray" data-hovercard-type="user" data-hovercard-url="/users/nairbv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/nairbv">nairbv</a>
|
||
released this
|
||
<relative-time datetime="2020-01-16T00:03:49Z" class="no-wrap">Jan 16, 2020</relative-time>
|
||
</p>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="markdown-body">
|
||
<h1>PyTorch 1.4.0 Release Notes</h1>
|
||
<ul>
|
||
<li>Highlights</li>
|
||
<li>Backwards Incompatible Changes
|
||
<ul>
|
||
<li>Python</li>
|
||
<li>JIT</li>
|
||
<li>C++</li>
|
||
</ul>
|
||
</li>
|
||
<li>New Features
|
||
<ul>
|
||
<li>torch.optim</li>
|
||
<li>Distributed</li>
|
||
<li>RPC [Experimental]</li>
|
||
<li>JIT</li>
|
||
<li>Mobile</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improvements
|
||
<ul>
|
||
<li>Distributed</li>
|
||
<li>JIT</li>
|
||
<li>Mobile</li>
|
||
<li>Named Tensors</li>
|
||
<li>C++ API</li>
|
||
<li>AMD Support</li>
|
||
<li>ONNX</li>
|
||
<li>Quantization</li>
|
||
<li>Visualization</li>
|
||
<li>Other Improvements</li>
|
||
</ul>
|
||
</li>
|
||
<li>Bug Fixes
|
||
<ul>
|
||
<li>Distributed</li>
|
||
<li>RPC</li>
|
||
<li>C++ API</li>
|
||
<li>JIT</li>
|
||
<li>Quantization</li>
|
||
<li>Mobile</li>
|
||
<li>Other Bug fixes</li>
|
||
</ul>
|
||
</li>
|
||
<li>Deprecations</li>
|
||
<li>Performance</li>
|
||
</ul>
|
||
<p>The PyTorch v1.4.0 release is now available.</p>
|
||
<p>The release contains over 1,500 commits and a significant amount of effort in areas spanning existing areas like JIT, ONNX, Distributed, Performance and Eager Frontend Improvements and improvements to experimental areas like mobile and quantization. It also contains new experimental features including rpc-based model parallel distributed training and language bindings for the Java language (inference only).</p>
|
||
<p><strong>PyTorch 1.4 is the last release that supports Python 2</strong>. For the C++ API, it is the last release that supports C++11: you should start migrating to Python 3 and building with C++14 to make the future transition from 1.4 to 1.5 easier.</p>
|
||
<h1>Highlights</h1>
|
||
<h2>PyTorch Mobile - Build level customization</h2>
|
||
<p>Following the experimental release of <a href="https://pytorch.org/blog/pytorch-1-dot-3-adds-mobile-privacy-quantization-and-named-tensors/" rel="nofollow">PyTorch Mobile in the 1.3 release</a>, PyTorch 1.4 adds additional mobile support including the ability to customize build scripts at a fine-grain level. This allows mobile developers to optimize library size by only including the operators used by their models and, in the process, reduce their on device footprint significantly. Initial results show that, for example, a customized MobileNetV2 is 40% to 50% smaller than the prebuilt PyTorch mobile library. <a href="https://pytorch.org/mobile/home/" rel="nofollow">Learn more</a> about how to create your own custom builds, and please engage with the community on the <a href="https://discuss.pytorch.org/c/mobile" rel="nofollow">PyTorch forums</a> to provide any feedback you have.</p>
|
||
<h2>Distributed Model Parallel Training [Experimental]</h2>
|
||
<p>With the scale of models, such as RoBERTa, continuing to increase into the billions of parameters, model parallel training has become ever more important to help researchers push the limits. This release provides a distributed RPC framework to support distributed model parallel training. It allows for running functions remotely and referencing remote objects without copying the real data around, and provides autograd and optimizer APIs to transparently run backwards and update parameters across RPC boundaries.</p>
|
||
<p>To learn more about the APIs and the design of this feature, see the links below:</p>
|
||
<ul>
|
||
<li><a href="https://pytorch.org/docs/stable/rpc.html" rel="nofollow">API documentation</a></li>
|
||
<li><a href="https://pytorch.org/docs/stable/notes/distributed_autograd.html" rel="nofollow">Distributed Autograd design doc</a></li>
|
||
<li><a href="https://pytorch.org/docs/stable/notes/rref.html" rel="nofollow">Remote Reference design doc</a></li>
|
||
</ul>
|
||
<p>For the full tutorials, see the links below:</p>
|
||
<ul>
|
||
<li><a href="https://pytorch.org/tutorials/intermediate/rpc_tutorial.html" rel="nofollow">A full RPC tutorial</a></li>
|
||
<li><a href="https://github.com/pytorch/examples/tree/master/distributed/rpc">Examples using model parallel training for reinforcement learning and with an LSTM</a></li>
|
||
</ul>
|
||
<p>As always, you can connect with community members and discuss more on the <a href="https://discuss.pytorch.org/c/distributed/distributed-rpc" rel="nofollow">forums</a>.</p>
|
||
<h2>Java bindings [Experimental]</h2>
|
||
<p>In addition to supporting Python and C++, this release adds experimental support for Java bindings. Based on the interface developed for Android in PyTorch Mobile, the new bindings allow you to invoke TorchScript models from any Java program. Note that the Java bindings are only available for Linux for this release, and for inference only. We expect support to expand in subsequent releases. See the code snippet below for how to use PyTorch within Java:</p>
|
||
<p>Learn more about how to use PyTorch from Java <a href="https://github.com/pytorch/java-demo">here</a>, and see the full Javadocs API documentation <a href="https://pytorch.org/docs/stable/packages.html" rel="nofollow">here</a>.</p>
|
||
<h2>Pruning</h2>
|
||
<p>Pruning functionalities have been added to PyTorch in the <code>nn.utils.prune</code> module. This provides out-of-the-box support for common magnitude-based and random pruning techniques, both structured and unstructured, both layer-wise and global, and it also enables custom pruning from user-provided masks.</p>
|
||
<p>To prune a tensor, first select a pruning technique among those available in <code>nn.utils.prune</code> (or implement your own by subclassing <code>BasePruningMethod</code>).</p>
|
||
<div class="highlight highlight-source-python"><pre><span class="pl-k">from</span> torch.nn.utils <span class="pl-k">import</span> prune
|
||
t <span class="pl-k">=</span> torch.rand(<span class="pl-c1">2</span>, <span class="pl-c1">5</span>)
|
||
p <span class="pl-k">=</span> prune.L1Unstructured(<span class="pl-v">amount</span><span class="pl-k">=</span><span class="pl-c1">0.7</span>)
|
||
pruned_tensor <span class="pl-k">=</span> p.prune(t)</pre></div>
|
||
<p>To prune a module, select one of the pruning functions available in <code>nn.utils.prune</code> (or implement your own) and specify which module and which parameter within that module pruning should act on.</p>
|
||
<div class="highlight highlight-source-python"><pre>m <span class="pl-k">=</span> nn.Conv2d(<span class="pl-c1">3</span>, <span class="pl-c1">1</span>, <span class="pl-c1">2</span>)
|
||
prune.ln_structured(<span class="pl-v">module</span><span class="pl-k">=</span>m, <span class="pl-v">name</span><span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">'</span>weight<span class="pl-pds">'</span></span>, <span class="pl-v">amount</span><span class="pl-k">=</span><span class="pl-c1">5</span>, <span class="pl-v">n</span><span class="pl-k">=</span><span class="pl-c1">2</span>, <span class="pl-v">dim</span><span class="pl-k">=</span><span class="pl-c1">1</span>)</pre></div>
|
||
<p>Pruning reparametrizes the module by turning <code>weight</code> (in the example above) from a parameter to an attribute, and replacing it with a new parameter called <code>weight_orig</code> (i.e. appending <code>"_orig"</code> to the initial parameter <code>name</code>) that stores the unpruned version of the tensor. The pruning mask is stored as a buffer named <code>weight_mask</code> (i.e. appending <code>"_mask"</code> to the initial parameter <code>name</code>). Pruning is applied prior to each forward pass by recomputing <code>weight</code> through a multiplication with the updated mask using PyTorch's <code>forward_pre_hooks</code>.</p>
|
||
<p>Iterative pruning is seamlessly enabled by repeatedly calling pruning functions on the same parameter (this automatically handles the combination of successive masks by making use of a <code>PruningContainer</code> under the hood).</p>
|
||
<p><code>nn.utils.prune</code> is easily extensible to support new pruning functions by subclassing the <code>BasePruningMethod</code> base class and implementing the <code>compute_mask</code> method with the instructions to compute the mask according to the logic of the new pruning technique.</p>
|
||
<h1>Backwards Incompatible Changes</h1>
|
||
<h2>Python</h2>
|
||
<h3><code>torch.optim</code>: It is no longer supported to use <code>Scheduler.get_lr()</code> to obtain the last computed learning rate. to get the last computed learning rate, call <code>Scheduler.get_last_lr()</code> instead. (<a href="https://github.com/pytorch/pytorch/pull/26423" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26423/hovercard">26423</a>)</h3>
|
||
<p>Learning rate schedulers are now “chainable,” as mentioned in the <em>New Features</em> section below. <code>Scheduler.get_lr</code> was sometimes used for monitoring purposes to obtain the current learning rate. But since <code>Scheduler.get_lr</code> is also used internally for computing new learning rates, this actually returns a value that is “one step ahead.” To get the last computed learning rate, use <code>Scheduler.get_last_lr</code> instead.</p>
|
||
<p>Note that <code>optimizer.param_groups[0]['lr']</code> was in version 1.3.1 and remains in 1.4.0 a way of getting the current learning rate used in the optimizer.</p>
|
||
<h3><code>Tensor.unfold</code> on a 0-dimensional Tensor now properly returns a 1-dimensional Tensor.</h3>
|
||
<p align="center">
|
||
</p><table align="center">
|
||
<tbody><tr><th>Version 1.3.1</th><th>Version 1.4.0</th></tr>
|
||
<tr valign="top">
|
||
<td><sub><div class="highlight highlight-source-python"><pre><span class="pl-k">>></span><span class="pl-k">></span> torch.tensor(<span class="pl-c1">5</span>).unfold(<span class="pl-v">dimension</span><span class="pl-k">=</span><span class="pl-c1">0</span>, <span class="pl-v">size</span><span class="pl-k">=</span><span class="pl-c1">1</span>, <span class="pl-v">step</span><span class="pl-k">=</span><span class="pl-c1">1</span>)
|
||
tensor(<span class="pl-c1">5</span>)
|
||
</pre></div></sub></td>
|
||
<td><sub><div class="highlight highlight-source-python"><pre><span class="pl-k">>></span><span class="pl-k">></span> torch.tensor(<span class="pl-c1">5</span>).unfold(<span class="pl-v">dimension</span><span class="pl-k">=</span><span class="pl-c1">0</span>, <span class="pl-v">size</span><span class="pl-k">=</span><span class="pl-c1">1</span>, <span class="pl-v">step</span><span class="pl-k">=</span><span class="pl-c1">1</span>)
|
||
tensor([<span class="pl-c1">5</span>])
|
||
</pre></div></sub></td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p></p>
|
||
<h3><code>torch.symeig</code> now return a 0-element eigenvectors tensor when <code>eigenvectors=False</code> (the default).</h3>
|
||
<p align="center">
|
||
</p><table align="center">
|
||
<tbody><tr><th>Version 1.3.1</th><th>Version 1.4.0</th></tr>
|
||
<tr valign="top">
|
||
<td><sub><div class="highlight highlight-source-python"><pre><span class="pl-k">>></span><span class="pl-k">></span> torch.symeig(torch.randn(<span class="pl-c1">3</span>,<span class="pl-c1">3</span>)).eigenvectors.shape
|
||
torch.Size([<span class="pl-c1">3</span>, <span class="pl-c1">3</span>])
|
||
</pre></div></sub></td>
|
||
<td><sub><div class="highlight highlight-source-python"><pre><span class="pl-k">>></span><span class="pl-k">></span> torch.symeig(torch.randn(<span class="pl-c1">3</span>,<span class="pl-c1">3</span>)).eigenvectors.shape
|
||
torch.Size([<span class="pl-c1">0</span>])
|
||
</pre></div></sub></td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p></p>
|
||
<h2>JIT</h2>
|
||
<ul>
|
||
<li>Make <code>torch.jit.get_trace_graph</code> private (it is now <code>torch.jit._get_trace_graph</code>) (<a href="https://github.com/pytorch/pytorch/pull/29149" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29149/hovercard">29149</a>)
|
||
<ul>
|
||
<li>This function was intended only for ONNX integration; use <code>traced_module.graph</code> instead, like:</li>
|
||
<li>traced_module = torch.jit.trace(my_module, example_inputs)<br>
|
||
traced_graph = traced_module.graph</li>
|
||
</ul>
|
||
</li>
|
||
<li><code>@property</code> on <code>ScriptModule</code>s has been disabled (<a href="https://github.com/pytorch/pytorch/pull/28395" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28395/hovercard">28395</a>)
|
||
<ul>
|
||
<li>Scripted <code>@property</code> accesses were silently broken before, where we would evaluate the the <code>get</code> function once and store that as the attribute permanently. They properly error now; a workaround is to make your <code>@property</code> a regular method.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Custom ops: <code>torch::jit::RegisterOperators</code> has been removed, use <code>torch::RegisterOperators</code> instead (<a href="https://github.com/pytorch/pytorch/pull/28229" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28229/hovercard">28229</a>). The usage and behavior should remain the same.</li>
|
||
<li>Remove<code> torch.jit._register_*</code> bindings from Python (e.g. <code>torch.jit._register_attribute</code>). These were private functions that were not intended to be used. (<a href="https://github.com/pytorch/pytorch/pull/29499" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29499/hovercard">29499</a>)</li>
|
||
</ul>
|
||
<h2>C++</h2>
|
||
<h3>[C++] The distinction between Tensor and Variable has been eliminated at the C++ level. (<a href="https://github.com/pytorch/pytorch/pull/28287" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28287/hovercard">28287</a>)</h3>
|
||
<p>This change simplifies our C++ API and matches previous changes we did at the python level that merged Tensors and Variables into a single type.</p>
|
||
<p>This change is unlikely to affect user code; the most likely exceptions are:</p>
|
||
<ol>
|
||
<li>
|
||
<p><a href="https://en.cppreference.com/w/cpp/language/adl" rel="nofollow">Argument-dependent lookup</a> for <code>torch::autograd</code> may no longer work. This can break because Variable is now defined as an alias for Tensor (<code>using Variable = Tensor;</code>). In this case, you must explicitly qualify the calls to <code>torch::autograd</code> functions.</p>
|
||
</li>
|
||
<li>
|
||
<p>Because <code>Variable</code> and <code>Tensor</code> are now the same type, code which assumes that they are different types (e.g., for the purposes of templating, or <code>std::enable_if</code> checks) will not work until you delete the (now) redundant overload/specialization.</p>
|
||
</li>
|
||
<li>
|
||
<p>Some operators may trace differently. If this happens, please <a href="https://github.com/pytorch/pytorch/issues/new?template=bug-report.md">file a bug.</a> The most likely situations are:</p>
|
||
</li>
|
||
</ol>
|
||
<ol>
|
||
<li>There are now <em>more</em> operations in your trace than before (usually, calls to <code>aten::empty</code>)</li>
|
||
<li>There are now <em>less</em> operations in your trace than before (e.g., the trace complains that <code>"there is no observable dependence"</code> with the inputs)</li>
|
||
</ol>
|
||
<h3>[C++] arguments in <code>torch::nn::LinearOptions</code> are renamed to match the Python API. (<a href="https://github.com/pytorch/pytorch/pull/27382" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27382/hovercard">27382</a>)</h3>
|
||
<ul>
|
||
<li>Arguments that are renamed:
|
||
<ul>
|
||
<li><code>in</code> -> <code>in_features</code></li>
|
||
<li><code>out</code> -> <code>out_features</code></li>
|
||
<li><code>with_bias</code> -> <code>bias</code></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h3>[C++] arguments in <code>torch::nn::Conv{1,2,3}dOptions</code> are renamed to match the Python API. (<a href="https://github.com/pytorch/pytorch/pull/28917" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28917/hovercard">28917</a>) (<a href="https://github.com/pytorch/pytorch/pull/29838" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29838/hovercard">29838</a>)</h3>
|
||
<ul>
|
||
<li>Arguments that are renamed:
|
||
<ul>
|
||
<li><code>input_channels</code> -> <code>in_channels</code></li>
|
||
<li><code>output_channels</code> -> <code>out_channels</code></li>
|
||
<li><code>with_bias</code> -> <code>bias</code></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h3>[C++] <code>torch::nn::Conv{1,2,3}dOptions</code> no longer has the <code>transposed</code> argument. (<a href="https://github.com/pytorch/pytorch/pull/31005" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/31005/hovercard">31005</a>)</h3>
|
||
<ul>
|
||
<li>If users have <code>transposed</code> originally set to <code>true</code> in <code>torch::nn::Conv{1,2,3}dOptions</code>, they should migrate their code to use <code>torch::nn::ConvTranspose{1,2,3}d</code> layers instead.</li>
|
||
</ul>
|
||
<h3>[C++] All Reduction enums for <code>torch::nn</code> layers and functionals are changed to have <code>torch::KEnumNAME</code> syntax. (<a href="https://github.com/pytorch/pytorch/pull/27942" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27942/hovercard">27942</a>, <a href="https://github.com/pytorch/pytorch/pull/26837" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26837/hovercard">26837</a>)</h3>
|
||
<ul>
|
||
<li>Example: previously, to specify “mean” as the reduction method in a torch::nn layer or functional, we would use <code>torch::Reduction::Mean</code>. Now, <code>torch::Reduction::Mean</code> has been renamed to the shorter <code>torch::kMean</code>.</li>
|
||
</ul>
|
||
<h3>[C++] <code>torch::tensor</code> constructor is improved to match Python API behavior. (<a href="https://github.com/pytorch/pytorch/pull/28523" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28523/hovercard">28523</a>) (<a href="https://github.com/pytorch/pytorch/pull/29632" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29632/hovercard">29632</a>) (<a href="https://github.com/pytorch/pytorch/pull/29066" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29066/hovercard">29066</a>)</h3>
|
||
<ul>
|
||
<li>Shape checking fixes
|
||
<ul>
|
||
<li>Example 1: previously, <code>torch::tensor({{1}, {2}})</code> produced a tensor of sizes <code>{2}</code>. Now, it produces a tensor of sizes <code>{2, 1}</code>.</li>
|
||
<li>Example 2: previously, <code>torch::tensor(1.1)</code> produced a 1-dim tensor. Now it produces a 0-dim tensor.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Type inference improvements
|
||
<ul>
|
||
<li>Example 1: previously, C++ <code>torch::tensor</code> with a double (e.g. <code>torch::tensor(1.1)</code>) or a (nested) braced-init-list of doubles (e.g. <code>torch::tensor({{1.1, 2.2}})</code> produces a tensor with dtype <code>torch::kDouble</code>. Now it produces a tensor with dtype <code>torch::get_default_dtype()</code>.</li>
|
||
<li>Example 2: previously, C++ <code>torch::tensor</code> with an integer type (e.g. <code>torch::tensor(1)</code>) or a (nested) braced-init-list of integer types (e.g. <code>torch::tensor({{1, 2}})</code>) produces a tensor with the same dtype. Now it always produces a tensor of dtype <code>torch::kLong</code> (aka. <code>int64_t</code>).</li>
|
||
<li>Example 3: previously, when passed a <code>TensorOptions</code> without a dtype set to the <code>torch::tensor</code> constructor, it always produces a tensor of dtype <code>torch::get_default_dtype()</code>. Now it produces a tensor of different dtypes based on the dtype of the braced-init-list and the default dtype.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Passing a <code>std::initializer_list</code> (NOT braced-init-list) to <code>torch::tensor</code> will no longer compile, and the user should pass the equivalent braced-init-list to <code>torch::tensor</code> instead. For example, write <code>torch::tensor({1.1, 1.2})</code> instead of <code>torch::tensor(std::initializer_list<double>({1.1, 1.2}))</code>.</li>
|
||
</ul>
|
||
<h3>[C++] Some activation modules’ <code>forward</code> function now take <code>Tensor</code> instead of <code>Tensor&</code> as input. (<a href="https://github.com/pytorch/pytorch/pull/28501" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28501/hovercard">28501</a>)</h3>
|
||
<p><code>torch::nn</code> layers affected: <code>ELU</code> / <code>SELU</code> / <code>Hardtanh</code> / <code>LeakyReLU</code> / <code>ReLU</code> / <code>ReLU6</code> / <code>RReLU</code> / <code>CELU</code><br>
|
||
This change ensures that the above layers can be used in a <code>torch::nn::Sequential</code> module. If your C++ model uses any of the above layers, you must recompile your C++ code with the new libtorch binary.</p>
|
||
<h1>New Features</h1>
|
||
<h2>torch.optim</h2>
|
||
<p>Learning rate schedulers (<code>torch.optim.lr_scheduler</code>) now support “chaining.” This means that two schedulers can be defined and stepped one after the other to compound their effect, see example below. Previously, the schedulers would overwrite each other.</p>
|
||
<pre><code>>>> import torch
|
||
>>> from torch.optim import SGD
|
||
>>> from torch.optim.lr_scheduler import ExponentialLR, StepLR
|
||
>>>
|
||
>>> model = [torch.nn.Parameter(torch.randn(2, 2, requires_grad=True))]
|
||
>>> optimizer = SGD(model, 0.1)
|
||
>>>
|
||
>>> scheduler1 = ExponentialLR(optimizer, gamma=0.9)
|
||
>>> scheduler2 = StepLR(optimizer, step_size=3, gamma=0.1)
|
||
>>>
|
||
>>> for epoch in range(4):
|
||
>>> print(epoch, scheduler2.get_last_lr()[0])
|
||
>>>
|
||
>>> optimizer.step()
|
||
>>> scheduler1.step()
|
||
>>> scheduler2.step()
|
||
|
||
0 0.1
|
||
1 0.09000000000000001
|
||
2 0.08100000000000002
|
||
3 0.00729000000000002
|
||
4 0.00656100000000002
|
||
</code></pre>
|
||
<h2>Distributed</h2>
|
||
<ul>
|
||
<li>Add <code>allgather_coalesced</code> API to <code>ProcessGroup</code> (<a href="https://github.com/pytorch/pytorch/pull/28634" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28634/hovercard">28634,</a><a href="https://github.com/pytorch/pytorch/pull/29059" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29059/hovercard">29059</a>)</li>
|
||
<li>Add <code>abort</code> API in <code>ProcessGroupGloo</code> Send/Recv Work (<a href="https://github.com/pytorch/pytorch/pull/29928" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29928/hovercard">29928</a>).</li>
|
||
<li>Add <code>--no_python</code> flag to allow using a bash script wrapper in the launch command (<a href="https://github.com/pytorch/pytorch/pull/29144" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29144/hovercard">29144</a>).</li>
|
||
</ul>
|
||
<h2>RPC [Experimental]</h2>
|
||
<p><code>torch.distributed.rpc</code> is a newly introduced package. It contains basic building blocks to run functions remotely in model training and inference, which will be useful for scenarios like distributed model parallel or implementing parameter server frameworks. More specifically, it contains four pillars: RPC, Remote Reference, Distributed Autograd, and Distributed Optimizer. Please refer to the <a href="https://pytorch.org/docs/master/rpc.html" rel="nofollow">documentation</a> and the <a href="https://pytorch.org/tutorials/intermediate/rpc_tutorial.html" rel="nofollow">tutorial</a> for more details.</p>
|
||
<ul>
|
||
<li>Add <code>rpc_sync</code> and <code>rpc_async</code> for builtin operators and Python user functions (<a href="https://github.com/pytorch/pytorch/pull/23228" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/23228/hovercard">23228</a>, <a href="https://github.com/pytorch/pytorch/pull/23569" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/23569/hovercard">23569</a>, <a href="https://github.com/pytorch/pytorch/pull/28392" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28392/hovercard">28392</a>).</li>
|
||
<li>Add <code>remote</code> and <code>RRef</code> for builtin operators and Python user functions (<a href="https://github.com/pytorch/pytorch/pull/25169" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25169/hovercard">25169</a>, <a href="https://github.com/pytorch/pytorch/pull/25499" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25499/hovercard">25499</a>).</li>
|
||
<li>Distributed Autograd - FAST mode backward pass implementation. (<a href="https://github.com/pytorch/pytorch/pull/27022" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27022/hovercard">27022</a>, <a href="https://github.com/pytorch/pytorch/pull/27576" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27576/hovercard">27576</a>).</li>
|
||
<li>Integrate <code>remote</code> and <code>RRef</code> with distributed autograd (<a href="https://github.com/pytorch/pytorch/pull/28630" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28630/hovercard">28630</a>, <a href="https://github.com/pytorch/pytorch/pull/28656" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28656/hovercard">28656</a>).</li>
|
||
<li>Add a distributed optimizer (<a href="https://github.com/pytorch/pytorch/pull/29304" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29304/hovercard">29304</a>, <a href="https://github.com/pytorch/pytorch/pull/30062" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30062/hovercard">30062</a>).</li>
|
||
<li>Add python API for <code>get_gradients()</code> method to retrieve gradients from distributed autograd context. (<a href="https://github.com/pytorch/pytorch/pull/28926" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28926/hovercard">28926</a>).</li>
|
||
<li>Support creating local <code>RRef</code>s on local values and to-self <code>remote</code> calls (<a href="https://github.com/pytorch/pytorch/pull/28948" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28948/hovercard">28948</a>, <a href="https://github.com/pytorch/pytorch/pull/29634" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29634/hovercard">29634</a>).</li>
|
||
<li>Support custom pickler for RPC (<a href="https://github.com/pytorch/pytorch/pull/30185" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30185/hovercard">30185</a>).</li>
|
||
<li>Add default RPC agent options based on the backend type (<a href="https://github.com/pytorch/pytorch/pull/30201" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30201/hovercard">30201</a>).</li>
|
||
<li>Add local <code>shutdown</code> to <code>ProcessGroup</code> agent (<a href="https://github.com/pytorch/pytorch/pull/30330" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30330/hovercard">30330</a>).</li>
|
||
</ul>
|
||
<h2>JIT</h2>
|
||
<ul>
|
||
<li><code>script::Module</code>: implement more of of the nn.Module API (<a href="https://github.com/pytorch/pytorch/pull/28828" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28828/hovercard">28828</a>)
|
||
<ul>
|
||
<li>In particular, adds the (optionally recursive) methods that iterate over submodules, parameters, etc.</li>
|
||
<li>Adds a pybind-like <code>attr()</code> method to simplify attribute access.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Add support for <code>@staticmethod</code> on <code>ScriptModule</code>s (<a href="https://github.com/pytorch/pytorch/pull/27163" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27163/hovercard">27163</a>)</li>
|
||
<li>Support Module Containers as Iterables (<a href="https://github.com/pytorch/pytorch/pull/26465" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26465/hovercard">26465</a>)</li>
|
||
<li>Support Iterables In List Comprehensions (<a href="https://github.com/pytorch/pytorch/pull/26768" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26768/hovercard">26768)</a></li>
|
||
<li>Dictionaries now preserve insertion order, and <code>OrderedDict</code> is supported (<a href="https://github.com/pytorch/pytorch/pull/26465" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26465/hovercard">26465</a>)</li>
|
||
<li>Add support for <code>hasattr()</code> (<a href="https://github.com/pytorch/pytorch/pull/29332" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29332/hovercard">29332</a>)</li>
|
||
<li>TorchScript classes can now be callable (<a href="https://github.com/pytorch/pytorch/pull/26743" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26743/hovercard">26743</a>)</li>
|
||
<li>Add <code>clone_instance</code> for <code>ScriptModule</code>s (<a href="https://github.com/pytorch/pytorch/pull/30168" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30168/hovercard">30168</a>)</li>
|
||
<li>Add <code>torch.memory_format</code> support to the TorchScript (<a href="https://github.com/pytorch/pytorch/pull/28544" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28544/hovercard">28544</a>)</li>
|
||
<li>Custom <code>forward()</code> is now allowed on container modules (<a href="https://github.com/pytorch/pytorch/pull/28988" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28988/hovercard">28988</a>)</li>
|
||
<li>Calls to submodules are now preserved in the traced graph (<a href="https://github.com/pytorch/pytorch/pull/29261" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29261/hovercard">29261</a>)</li>
|
||
<li>Add support for module containers to be used as iterables (<a href="https://github.com/pytorch/pytorch/pull/28255" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28255/hovercard">28255</a>)</li>
|
||
<li>Make JIT Serialization support arbitrary std::function<> IO (<a href="https://github.com/pytorch/pytorch/pull/28039" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28039/hovercard">28039</a>)</li>
|
||
<li>Support <code>layout() </code>in script (<a href="https://github.com/pytorch/pytorch/pull/27100" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27100/hovercard">27100</a>)</li>
|
||
<li>Methods and functions are no longer inlined in the serialized file format (<a href="https://github.com/pytorch/pytorch/pull/26706" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26706/hovercard">26706</a>)</li>
|
||
</ul>
|
||
<h2>Mobile</h2>
|
||
<ul>
|
||
<li>Build level customization
|
||
<ul>
|
||
<li>Add custom build script to only include selected operators (<a href="https://github.com/pytorch/pytorch/pull/30144" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30144/hovercard">30144</a>).</li>
|
||
<li>Dump operator names used by a script module (<a href="https://github.com/pytorch/pytorch/pull/29374" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29374/hovercard">29374</a>, <a href="https://github.com/pytorch/pytorch/pull/30467" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30467/hovercard">30467</a>).</li>
|
||
<li>Disable JIT optimizer in Android wrapper for mobile custom build (<a href="https://github.com/pytorch/pytorch/pull/30285" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30285/hovercard">30285</a>).</li>
|
||
<li>FBJNI Gradle ABI_FILTERS parameter (<a href="https://github.com/pytorch/pytorch/pull/30135" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30135/hovercard">30135</a>).</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h1>Improvements</h1>
|
||
<h2>Distributed</h2>
|
||
<h3>Improvements</h3>
|
||
<ul>
|
||
<li>Add timeout support in <code>ProcessGroupNCCL</code> (<a href="https://github.com/pytorch/pytorch/pull/27224" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27224/hovercard">27224</a>).</li>
|
||
<li>Ensure that DDP wrapped module has parameters that require gradients (<a href="https://github.com/pytorch/pytorch/pull/25858" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25858/hovercard">25858</a>).</li>
|
||
<li>Making <code>torch/csrc/cuda</code> NCCL usage safe for NCCL 2.5 (<a href="https://github.com/pytorch/pytorch/pull/29014" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29014/hovercard">29014</a>).</li>
|
||
<li>Enable <code>test_distributed</code> for ROCm but only with NCCL backend (<a href="https://github.com/pytorch/pytorch/pull/28814" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28814/hovercard">28814</a>).</li>
|
||
</ul>
|
||
<h3>RPC Improvements</h3>
|
||
<ul>
|
||
<li>Separate out RPC to <code>rpc_sync</code> and <code>rpc_async</code> APIs (<a href="https://github.com/pytorch/pytorch/pull/26570" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26570/hovercard">26570</a>).</li>
|
||
<li>Make python user function serialization format to be consistent with builtin operators (<a href="https://github.com/pytorch/pytorch/pull/27136" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27136/hovercard">27136</a>).</li>
|
||
<li>Clean up distributed autograd context on all participants on exit (<a href="https://github.com/pytorch/pytorch/pull/27951" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27951/hovercard">27951</a>).</li>
|
||
<li>Improve error handling for distributed autograd engine. (<a href="https://github.com/pytorch/pytorch/pull/27940" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27940/hovercard">27940</a>).</li>
|
||
<li>Scope pybind11 functions to <code>torch.distributed.{autograd,rpc}</code> (<a href="https://github.com/pytorch/pytorch/pull/27529" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27529/hovercard">27529</a>).</li>
|
||
<li>Lift <code>rpc_timeout</code> to <code>RpcAgent</code> to make it reusable for other <code>RpcAgent</code> implementations. (<a href="https://github.com/pytorch/pytorch/pull/29341" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29341/hovercard">29341</a>).</li>
|
||
<li>Support sending message to self in <code>process_group_agent</code> (<a href="https://github.com/pytorch/pytorch/pull/29253" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29253/hovercard">29253</a>).</li>
|
||
<li>Properly shutdown RPC even in the case of <code>clean_shutdown=False</code>. (<a href="https://github.com/pytorch/pytorch/pull/29148" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29148/hovercard">29148</a>).</li>
|
||
<li>Ensure <code>initializedContextIds_</code> map is cleaned up appropriately in distributed autograd engine. (<a href="https://github.com/pytorch/pytorch/pull/29787" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29787/hovercard">29787</a>).</li>
|
||
<li>Add hash and equality operators for <code>WorkerInfo</code> (<a href="https://github.com/pytorch/pytorch/pull/29958" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29958/hovercard">29958</a>).</li>
|
||
<li>Add <code>RpcAgentOptions</code> struct type to bundle arguments for different <code>RpcAgent</code>s (<a href="https://github.com/pytorch/pytorch/pull/29972" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29972/hovercard">29972</a>).</li>
|
||
<li>Mark timeout <code>FutureMessage</code>s and throw exceptions in <code>ProcessGroupAgent</code> (<a href="https://github.com/pytorch/pytorch/pull/29601" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29601/hovercard">29601</a>).</li>
|
||
<li>Re-throw python remote exception when using remote reference to itself (<a href="https://github.com/pytorch/pytorch/pull/29930" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29930/hovercard">29930</a>).</li>
|
||
<li>By default ignore <code>RRef</code> leaks during shutdown (<a href="https://github.com/pytorch/pytorch/pull/30217" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30217/hovercard">30217</a>).</li>
|
||
</ul>
|
||
<h3>Documentation</h3>
|
||
<ul>
|
||
<li>Add Design doc for Distributed Autograd Engine (<a href="https://github.com/pytorch/pytorch/pull/29175" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29175/hovercard">29175</a>, <a href="https://github.com/pytorch/pytorch/pull/30068" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30068/hovercard">30068</a>, <a href="https://github.com/pytorch/pytorch/pull/29927" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29927/hovercard">29927</a>)</li>
|
||
<li>Add Design doc for Remote Reference (<a href="https://github.com/pytorch/pytorch/pull/30066" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30066/hovercard">30066</a>).</li>
|
||
<li>Add documentation page for <code>torch.distrbuted.rpc</code> (<a href="https://github.com/pytorch/pytorch/pull/29276" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29276/hovercard">29276</a>, <a href="https://github.com/pytorch/pytorch/pull/28030" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28030/hovercard">28030</a>, <a href="https://github.com/pytorch/pytorch/pull/29971" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29971/hovercard">29971</a>, <a href="https://github.com/pytorch/pytorch/pull/30160" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30160/hovercard">30160</a>, <a href="https://github.com/pytorch/pytorch/pull/30050" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30050/hovercard">30050</a>, <a href="https://github.com/pytorch/pytorch/pull/30069" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30069/hovercard">30069</a>, <a href="https://github.com/pytorch/pytorch/pull/30179" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30179/hovercard">30179</a>, <a href="https://github.com/pytorch/pytorch/pull/30218" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30218/hovercard">30218</a>, <a href="https://github.com/pytorch/pytorch/pull/30240" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30240/hovercard">30240</a>, <a href="https://github.com/pytorch/pytorch/pull/30243" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30243/hovercard">30243</a>, <a href="https://github.com/pytorch/pytorch/pull/30259" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30259/hovercard">30259</a>).</li>
|
||
</ul>
|
||
<h3>MISC</h3>
|
||
<ul>
|
||
<li>Add known worker IDs to distributed autograd context (<a href="https://github.com/pytorch/pytorch/pull/26324" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26324/hovercard">26324</a>).</li>
|
||
<li>Minor tweaks to RPC message API (<a href="https://github.com/pytorch/pytorch/pull/28326" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28326/hovercard">28326</a>).</li>
|
||
<li>Rename <code>PythonUDF{Call,Resp}</code> (<a href="https://github.com/pytorch/pytorch/pull/27530" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27530/hovercard">27530</a>).</li>
|
||
<li>Use <code>std::shared_ptr</code> for <code>DistAutogradContext</code> (<a href="https://github.com/pytorch/pytorch/pull/29770" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29770/hovercard">29770</a>).</li>
|
||
<li>Mark <code>c10d::~NCCLUtils</code> as noexcept (<a href="https://github.com/pytorch/pytorch/pull/29118" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29118/hovercard">29118</a>).</li>
|
||
</ul>
|
||
<h2>JIT</h2>
|
||
<ul>
|
||
<li>Move custom passes to last optimization step (<a href="https://github.com/pytorch/pytorch/pull/29256" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29256/hovercard">29256</a>)</li>
|
||
<li>Represent the original Python name of a module type the same way in traced and scripted modules. (<a href="https://github.com/pytorch/pytorch/pull/29912" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29912/hovercard">29912</a>)</li>
|
||
<li>Only print original SourceRange on highlight (<a href="https://github.com/pytorch/pytorch/pull/29708" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29708/hovercard">29708</a>)</li>
|
||
<li>Error message and ergonomic improvements:
|
||
<ul>
|
||
<li>Show full call stack in TorchScript exception even when calls were inlined. (<a href="https://github.com/pytorch/pytorch/pull/29911" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29911/hovercard">29911</a>)</li>
|
||
<li>Reduce error context from 10 -> 3 (<a href="https://github.com/pytorch/pytorch/pull/26765" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26765/hovercard">26765</a>)</li>
|
||
<li>Fix error report highlight for unmatched type annotation (<a href="https://github.com/pytorch/pytorch/pull/27195" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27195/hovercard">27195</a>)</li>
|
||
<li>Make default string arguments in schemas human readable (<a href="https://github.com/pytorch/pytorch/pull/27088" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27088/hovercard">27088</a>)</li>
|
||
<li>Print which output didn't have dependence during trace checking. (<a href="https://github.com/pytorch/pytorch/pull/29047" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29047/hovercard">29047</a>)</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improvements to save/load and serialization performance:
|
||
<ul>
|
||
<li>Modules can now share JIT types if their implementation is the same, improving save/load performance (<a href="https://github.com/pytorch/pytorch/pull/26666" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26666/hovercard">26666</a>)</li>
|
||
<li>Improve float pickling speed. (<a href="https://github.com/pytorch/pytorch/pull/28553" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28553/hovercard">28553</a>)</li>
|
||
<li>Pickler: convert <code>std::stringstream</code> cases for improved performance. (<a href="https://github.com/pytorch/pytorch/pull/29351" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29351/hovercard">29351</a>)</li>
|
||
<li>Buffer to speed Unpickler (<a href="https://github.com/pytorch/pytorch/pull/27727" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27727/hovercard">27727</a>)</li>
|
||
<li>Buffer in Pickler to improve performance. (<a href="https://github.com/pytorch/pytorch/pull/27720" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27720/hovercard">27720</a>)</li>
|
||
<li>In <code>torch::save()</code> avoid zip compressing small header records. (<a href="https://github.com/pytorch/pytorch/pull/28180" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28180/hovercard">28180</a>)</li>
|
||
<li>String optimizations related to serialization. (<a href="https://github.com/pytorch/pytorch/pull/28230" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28230/hovercard">28230</a>)</li>
|
||
</ul>
|
||
</li>
|
||
<li>Clean up serialized source format (<a href="https://github.com/pytorch/pytorch/pull/28129" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28129/hovercard">28129</a>)</li>
|
||
<li>API for finding a common ancestor block for a pair of nodes (<a href="https://github.com/pytorch/pytorch/pull/28864" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28864/hovercard">28864</a>)</li>
|
||
<li>Make inserted child module names unique (<a href="https://github.com/pytorch/pytorch/pull/27237" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27237/hovercard">27237</a>)</li>
|
||
<li>Better hashing for constant pool (<a href="https://github.com/pytorch/pytorch/pull/27733" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27733/hovercard">27733</a>)</li>
|
||
<li>Improve error messages when a method or attribute is missing (<a href="https://github.com/pytorch/pytorch/pull/27110" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27110/hovercard">27110</a>)</li>
|
||
<li>Display original source range in <code>Node::print</code> (<a href="https://github.com/pytorch/pytorch/pull/27524" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27524/hovercard">27524</a>)</li>
|
||
<li>Always use the closure to resolve variable names (<a href="https://github.com/pytorch/pytorch/pull/27515" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27515/hovercard">27515</a>)</li>
|
||
</ul>
|
||
<h2>Mobile</h2>
|
||
<ul>
|
||
<li>Improve Java API / JNI
|
||
<ul>
|
||
<li>Add module method to allow explicitly destructing native part (<a href="https://github.com/pytorch/pytorch/pull/27090" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27090/hovercard">27090</a>).</li>
|
||
<li>Add methods to write image tensor content to buffer (<a href="https://github.com/pytorch/pytorch/pull/27359" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27359/hovercard">27359</a>).</li>
|
||
<li>Various improvements to Android API (<a href="https://github.com/pytorch/pytorch/pull/27454" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27454/hovercard">27454</a>, <a href="https://github.com/pytorch/pytorch/pull/27455" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27455/hovercard">27455</a>).</li>
|
||
<li>Add support for PyTorch JNI build (<a href="https://github.com/pytorch/pytorch/pull/29412" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29412/hovercard">29412</a>, <a href="https://github.com/pytorch/pytorch/commit/42faf961c8">42faf961c8</a>, <a href="https://github.com/pytorch/pytorch/commit/d22f61432d">d22f61432d</a>).</li>
|
||
<li>Various fixes to PyTorch JNI (<a href="https://github.com/pytorch/pytorch/pull/29350" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29350/hovercard">29350</a>, <a href="https://github.com/pytorch/pytorch/pull/29861" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29861/hovercard">29861</a>, <a href="https://github.com/pytorch/pytorch/pull/30206" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30206/hovercard">30206</a>, <a href="https://github.com/pytorch/pytorch/pull/30207" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30207/hovercard">30207</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improve support for older Android NDK
|
||
<ul>
|
||
<li>Introduce math_compat.h for older Android versions (<a href="https://github.com/pytorch/pytorch/pull/28567" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28567/hovercard">28567</a>).</li>
|
||
<li>Define std::strtoll for older Android (<a href="https://github.com/pytorch/pytorch/pull/28603" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28603/hovercard">28603</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improve error message, documentation, debuggability
|
||
<ul>
|
||
<li>Enable full error message for mobile builds (<a href="https://github.com/pytorch/pytorch/pull/29926" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29926/hovercard">29926</a>).</li>
|
||
<li>Update iOS README.md (<a href="https://github.com/pytorch/pytorch/pull/27145" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27145/hovercard">27145</a>).</li>
|
||
<li>Update Android README.md (<a href="https://github.com/pytorch/pytorch/pull/28533" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28533/hovercard">28533</a>).</li>
|
||
<li>Rename function parameters to avoid [-Werror,-Wshadow] (<a href="https://github.com/pytorch/pytorch/pull/30276" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30276/hovercard">30276</a>).</li>
|
||
<li>Fix exception message in Java Tensor (<a href="https://github.com/pytorch/pytorch/pull/30776" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30776/hovercard">30776</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improve support for benchmark and profiling
|
||
<ul>
|
||
<li>Add Android and iOS test app for benchmark and profiling (<a href="https://github.com/pytorch/pytorch/pull/28405" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28405/hovercard">28405</a>, <a href="https://github.com/pytorch/pytorch/pull/28406" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28406/hovercard">28406</a>, <a href="https://github.com/pytorch/pytorch/pull/28469" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28469/hovercard">28469</a>, <a href="https://github.com/pytorch/pytorch/pull/28622" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28622/hovercard">28622</a>).</li>
|
||
<li>Integration with mobile benchmark in PEP (<a href="https://github.com/pytorch/pytorch/pull/28437" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28437/hovercard">28437</a>).</li>
|
||
<li>Subscribe for record function and if android do atrace (<a href="https://github.com/pytorch/pytorch/pull/28708" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28708/hovercard">28708</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Improve build / CI
|
||
<ul>
|
||
<li>Improve Android Gradle build and publishing (<a href="https://github.com/pytorch/pytorch/pull/26833" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26833/hovercard">26833</a>, <a href="https://github.com/pytorch/pytorch/pull/27389" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27389/hovercard">27389</a>, <a href="https://github.com/pytorch/pytorch/pull/29262" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29262/hovercard">29262</a>, <a href="https://github.com/pytorch/pytorch/pull/29738" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29738/hovercard">29738</a>).</li>
|
||
<li>Misc fixes to the Android test project (<a href="https://github.com/pytorch/pytorch/pull/27453" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27453/hovercard">27453</a>).</li>
|
||
<li>Improve XCode build script (<a href="https://github.com/pytorch/pytorch/pull/27358" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27358/hovercard">27358</a>, <a href="https://github.com/pytorch/pytorch/pull/28996" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28996/hovercard">28996</a>, <a href="https://github.com/pytorch/pytorch/pull/29002" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29002/hovercard">29002</a>).</li>
|
||
<li>Add testing code to iOS CI jobs (<a href="https://github.com/pytorch/pytorch/pull/27593" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27593/hovercard">27593</a>, <a href="https://github.com/pytorch/pytorch/pull/27594" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27594/hovercard">27594</a>, <a href="https://github.com/pytorch/pytorch/pull/27784" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27784/hovercard">27784</a>, <a href="https://github.com/pytorch/pytorch/pull/30133" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30133/hovercard">30133</a>).</li>
|
||
<li>Misc fixes to the iOS TestApp (<a href="https://github.com/pytorch/pytorch/pull/27591" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27591/hovercard">27591</a>, <a href="https://github.com/pytorch/pytorch/pull/28356" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28356/hovercard">28356</a>, <a href="https://github.com/pytorch/pytorch/pull/28809" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28809/hovercard">28809</a>, <a href="https://github.com/pytorch/pytorch/pull/29247" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29247/hovercard">29247</a>, <a href="https://github.com/pytorch/pytorch/pull/29962" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29962/hovercard">29962</a>, <a href="https://github.com/pytorch/pytorch/pull/29963" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29963/hovercard">29963</a>).</li>
|
||
<li>Add support for host build to pytorch_android (<a href="https://github.com/pytorch/pytorch/pull/27662" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27662/hovercard">27662,</a><a href="https://github.com/pytorch/pytorch/pull/27664" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27664/hovercard">27664</a>).</li>
|
||
<li>Add host build Gradle publishing (<a href="https://github.com/pytorch/pytorch/pull/29749" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29749/hovercard">29749</a>).</li>
|
||
<li>Add mobile build CI with host toolchain (<a href="https://github.com/pytorch/pytorch/pull/30292" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30292/hovercard">30292</a>).</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h2>Named Tensors</h2>
|
||
<ul>
|
||
<li><code>torch.addcdiv</code>, <code>torch.addcmul</code> Added named tensor support (<a href="https://github.com/pytorch/pytorch/pull/28975" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28975/hovercard">28975</a>).</li>
|
||
<li><code>torch.{ones,zeros,full,rand,randn}_like</code> Added named tensor support (<a href="https://github.com/pytorch/pytorch/pull/28981" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28981/hovercard">28981</a>).</li>
|
||
<li><code>torch.cdist</code> Added named tensor support (<a href="https://github.com/pytorch/pytorch/pull/29129" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29129/hovercard">29129</a>).</li>
|
||
<li><code>torch.equal</code> Added named tensor support (<a href="https://github.com/pytorch/pytorch/pull/29322" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29322/hovercard">29322</a>).</li>
|
||
<li>Added named tensor support for comparison ops (<a href="https://github.com/pytorch/pytorch/pull/27162" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27162/hovercard">27162</a>).</li>
|
||
<li><code>Tensor.align_to</code> Fixed error message (<a href="https://github.com/pytorch/pytorch/pull/27221" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27221/hovercard">27221</a>).</li>
|
||
<li><code>Tensor.align_to</code> Make method-only. (<a href="https://github.com/pytorch/pytorch/pull/27304" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27304/hovercard">27304</a>).</li>
|
||
<li><code>Tensor.align_to</code> Accept partially named tensors (<a href="https://github.com/pytorch/pytorch/pull/27308" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27308/hovercard">27308</a>).</li>
|
||
<li><code>torch.mean(Tensor, Dimname)</code> Fixed autograd support (<a href="https://github.com/pytorch/pytorch/pull/29199" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29199/hovercard">29199</a>).</li>
|
||
<li><code>Tensor.unflatten</code> Fix when dim is a negative integer (<a class="issue-link js-issue-link" data-error-text="Failed to load issue title" data-id="537212278" data-permission-text="Issue title is private" data-url="https://github.com/pytorch/pytorch/issues/31208" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/31208/hovercard" href="https://github.com/pytorch/pytorch/pull/31208">#31208</a>) (<a href="https://github.com/pytorch/pytorch/pull/31432" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/31432/hovercard">31432</a>).</li>
|
||
<li>Fix type errors in examples about Named Tensor (<a href="https://github.com/pytorch/pytorch/pull/27828" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27828/hovercard">27828</a>).</li>
|
||
</ul>
|
||
<h2>C++ API</h2>
|
||
<h3>New torch::nn modules</h3>
|
||
<ul>
|
||
<li>Convolution layers
|
||
<ul>
|
||
<li>torch::nn::ConvTranspose{1,2,3}d / Unfold (<a href="https://github.com/pytorch/pytorch/pull/29721" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29721/hovercard">29721</a>) (<a href="https://github.com/pytorch/pytorch/pull/27809" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27809/hovercard">27809</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Pooling layers
|
||
<ul>
|
||
<li>torch::nn::AdaptiveAvgPool{1, 2, 3}d / MaxUnpool{1, 2, 3}d / LPPool{1, 2}d / FractionalMaxPool{2,3}d (<a href="https://github.com/pytorch/pytorch/pull/26808" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26808/hovercard">26808</a>, <a href="https://github.com/pytorch/pytorch/pull/26818" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26818/hovercard">26818</a>, <a href="https://github.com/pytorch/pytorch/pull/26819" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26819/hovercard">26819</a>) (<a href="https://github.com/pytorch/pytorch/pull/26896" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26896/hovercard">26896</a>, <a href="https://github.com/pytorch/pytorch/pull/26915" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26915/hovercard">26915</a>, <a href="https://github.com/pytorch/pytorch/pull/27027" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27027/hovercard">27027</a>) (<a href="https://github.com/pytorch/pytorch/pull/27800" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27800/hovercard">27800</a>, <a href="https://github.com/pytorch/pytorch/pull/28492" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28492/hovercard">28492</a>, <a href="https://github.com/pytorch/pytorch/pull/29584" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29584/hovercard">29584</a>) (<a href="https://github.com/pytorch/pytorch/pull/29933" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29933/hovercard">29933</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Loss layers
|
||
<ul>
|
||
<li>torch::nn::HingeEmbeddingLoss / CosineEmbeddingLoss /MultiMarginLoss (<a href="https://github.com/pytorch/pytorch/pull/27101" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27101/hovercard">27101</a>) (<a href="https://github.com/pytorch/pytorch/pull/27345" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27345/hovercard">27345</a>) (<a href="https://github.com/pytorch/pytorch/pull/27424" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27424/hovercard">27424</a>) (<a href="https://github.com/pytorch/pytorch/pull/27770" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27770/hovercard">27770</a>).</li>
|
||
<li>torch::nn::TripletMarginLoss / SoftMarginloss / MultiLabelMargin / MarginRankingLoss / MultiLabelSoftMarginLoss (<a href="https://github.com/pytorch/pytorch/pull/27713" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27713/hovercard">27713</a>, <a href="https://github.com/pytorch/pytorch/pull/27956" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27956/hovercard">27956</a>) (<a href="https://github.com/pytorch/pytorch/pull/27660" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27660/hovercard">27660</a>) (<a href="https://github.com/pytorch/pytorch/pull/27659" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27659/hovercard">27659</a>) (<a href="https://github.com/pytorch/pytorch/pull/29000" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29000/hovercard">29000</a>) (<a href="https://github.com/pytorch/pytorch/pull/27669" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27669/hovercard">27669</a>).</li>
|
||
<li>torch::nn::MSELoss / KLDivLoss / BCELoss / SmoothL1Loss / PoissonNLLLoss / BCEWithLogitsLoss (<a href="https://github.com/pytorch/pytorch/pull/27156" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27156/hovercard">27156</a>) (<a href="https://github.com/pytorch/pytorch/pull/28806" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28806/hovercard">28806</a>) (<a href="https://github.com/pytorch/pytorch/pull/30146" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30146/hovercard">30146</a>) (<a href="https://github.com/pytorch/pytorch/pull/27661" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27661/hovercard">27661</a>) (<a href="https://github.com/pytorch/pytorch/pull/28755" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28755/hovercard">28755</a>) (<a href="https://github.com/pytorch/pytorch/pull/28783" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28783/hovercard">28783</a>).</li>
|
||
<li>torch::nn::NLLLoss / CrossEntropyLoss / CTCLoss (<a href="https://github.com/pytorch/pytorch/pull/29812" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29812/hovercard">29812</a>) (<a href="https://github.com/pytorch/pytorch/pull/28654" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28654/hovercard">28654</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Normalization Layers
|
||
<ul>
|
||
<li>torch::nn::LayerNorm / InstanceNorm{1,2,3}d / BatchNorm{1,2,3}d / GroupNorm / LocalResponseNorm / CrossMapLRN2d (<a href="https://github.com/pytorch/pytorch/pull/28032" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28032/hovercard">28032</a>) (<a href="https://github.com/pytorch/pytorch/pull/28790" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28790/hovercard">28790</a>) (<a href="https://github.com/pytorch/pytorch/pull/28176" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28176/hovercard">28176</a>, <a href="https://github.com/pytorch/pytorch/pull/28936" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28936/hovercard">28936</a>) (<a href="https://github.com/pytorch/pytorch/pull/29920" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29920/hovercard">29920</a>) (<a href="https://github.com/pytorch/pytorch/pull/28759" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28759/hovercard">28759</a>) (<a href="https://github.com/pytorch/pytorch/pull/29039" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29039/hovercard">29039</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Activation Layers
|
||
<ul>
|
||
<li>torch::nn::ELU / LeakyReLU / SELU / PReLU / ReLU / ReLU6 / RRelu / CELU / GLU (<a href="https://github.com/pytorch/pytorch/pull/27028" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27028/hovercard">27028)</a> (<a href="https://github.com/pytorch/pytorch/pull/27059" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27059/hovercard">27059</a>) (<a href="https://github.com/pytorch/pytorch/pull/27434" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27434/hovercard">27434</a>) (<a href="https://github.com/pytorch/pytorch/pull/27429" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27429/hovercard">27429</a>) (<a href="https://github.com/pytorch/pytorch/pull/27435" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27435/hovercard">27435</a>) (<a href="https://github.com/pytorch/pytorch/pull/27436" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27436/hovercard">27436</a>) (<a href="https://github.com/pytorch/pytorch/pull/27437" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27437/hovercard">27437</a>) (<a href="https://github.com/pytorch/pytorch/pull/27487" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27487/hovercard">27487</a>) (<a href="https://github.com/pytorch/pytorch/pull/29922" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29922/hovercard">29922</a>).</li>
|
||
<li>torch::nn::Sigmoid / LogSigmoid / LogSoftmax / Softmax / Softmax2d / Softplus / Softmin / Softsign / Softshrink / Hardshrink / Hardtanh / Tanh / Threshold (<a href="https://github.com/pytorch/pytorch/pull/27488" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27488/hovercard">27488</a>) (<a href="https://github.com/pytorch/pytorch/pull/27060" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27060/hovercard">27060</a>) (<a href="https://github.com/pytorch/pytorch/pull/27462" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27462/hovercard">27462</a>) (<a href="https://github.com/pytorch/pytorch/pull/27446" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27446/hovercard">27446</a>) (<a href="https://github.com/pytorch/pytorch/pull/27509" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27509/hovercard">27509</a>) (<a href="https://github.com/pytorch/pytorch/pull/27489" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27489/hovercard">27489</a>) (<a href="https://github.com/pytorch/pytorch/pull/27459" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27459/hovercard">27459</a>) (<a href="https://github.com/pytorch/pytorch/pull/27535" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27535/hovercard">27535</a>) (<a href="https://github.com/pytorch/pytorch/pull/27534" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27534/hovercard">27534</a>) (<a href="https://github.com/pytorch/pytorch/pull/27035" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27035/hovercard">27035</a>) (<a href="https://github.com/pytorch/pytorch/pull/27537" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27537/hovercard">27537</a>) (<a href="https://github.com/pytorch/pytorch/pull/27038" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27038/hovercard">27038</a>) (<a href="https://github.com/pytorch/pytorch/pull/27536" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27536/hovercard">27536</a>) (<a href="https://github.com/pytorch/pytorch/pull/27538" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27538/hovercard">27538</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Dropout Layers
|
||
<ul>
|
||
<li>torch::nn::Dropout / Dropout{2, 3}d / AlphaDropout / FeatureAlphaDropout (<a href="https://github.com/pytorch/pytorch/pull/29761" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29761/hovercard">29761</a>) (<a href="https://github.com/pytorch/pytorch/pull/28424" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28424/hovercard">28424</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Padding Layers
|
||
<ul>
|
||
<li>torch::nn::ReflectionPad{1, 2}d / ReplicationPad{1,2,3}d / ZeroPad2d / ConstantPad{1,2,3}d (<a href="https://github.com/pytorch/pytorch/pull/28538" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28538/hovercard">28538</a>) (<a href="https://github.com/pytorch/pytorch/pull/28539" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28539/hovercard">28539</a>) (<a href="https://github.com/pytorch/pytorch/pull/28540" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28540/hovercard">28540</a>) (<a href="https://github.com/pytorch/pytorch/pull/28541" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28541/hovercard">28541</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Embedding layers
|
||
<ul>
|
||
<li>torch::nn::Embedding / EmbeddingBag (<a href="https://github.com/pytorch/pytorch/pull/26358" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26358/hovercard">26358</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Linear layers
|
||
<ul>
|
||
<li>torch::nn::Bilinear / Flatten (<a href="https://github.com/pytorch/pytorch/pull/26082" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26082/hovercard">26082</a>) (<a href="https://github.com/pytorch/pytorch/pull/28072" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28072/hovercard">28072</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Vision layers
|
||
<ul>
|
||
<li>torch::nn::Upsample / PixelShuffle (<a href="https://github.com/pytorch/pytorch/pull/28413" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28413/hovercard">28413</a>) (<a href="https://github.com/pytorch/pytorch/pull/28140" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28140/hovercard">28140</a>).</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h3>New torch::nn::functional functions</h3>
|
||
<ul>
|
||
<li>Convolution functions
|
||
<ul>
|
||
<li>torch::nn::functional::conv{1,2,3}d / conv_transpose{1,2,3}d / fold / unfold (<a href="https://github.com/pytorch/pytorch/pull/28917" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28917/hovercard">28917</a>) (<a href="https://github.com/pytorch/pytorch/pull/29721" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29721/hovercard">29721</a>) (<a href="https://github.com/pytorch/pytorch/pull/28732" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28732/hovercard">28732</a>) (<a href="https://github.com/pytorch/pytorch/pull/27809" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27809/hovercard">27809</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Pooling functions
|
||
<ul>
|
||
<li>torch::nn::functional::adaptive_avg_pool{1, 2, 3}d / lp_pool{1, 2}d / fractional_max_pool{2, 3}d / fractional_max_pool{2, 3}d_with_indices (<a href="https://github.com/pytorch/pytorch/pull/26808" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26808/hovercard">26808</a>, <a href="https://github.com/pytorch/pytorch/pull/26818" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26818/hovercard">26818</a>, <a href="https://github.com/pytorch/pytorch/pull/26819" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26819/hovercard">26819</a>) (<a href="https://github.com/pytorch/pytorch/pull/27800" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27800/hovercard">27800</a>, <a href="https://github.com/pytorch/pytorch/pull/28492" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28492/hovercard">28492</a>) (<a href="https://github.com/pytorch/pytorch/pull/29584" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29584/hovercard">29584</a>) (<a href="https://github.com/pytorch/pytorch/pull/29933" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29933/hovercard">29933</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Loss functions
|
||
<ul>
|
||
<li>torch::nn::functional::hinge_embedding_loss / multi_margin_loss / multilabel_soft_margin_loss / triplet_margin_loss / soft_margin_loss / margin_ranking_loss (<a href="https://github.com/pytorch/pytorch/pull/27101" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27101/hovercard">27101</a>) (<a href="https://github.com/pytorch/pytorch/pull/27424" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27424/hovercard">27424</a>) (<a href="https://github.com/pytorch/pytorch/pull/27669" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27669/hovercard">27669</a>) (<a href="https://github.com/pytorch/pytorch/pull/27713" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27713/hovercard">27713</a>) (<a href="https://github.com/pytorch/pytorch/pull/27660" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27660/hovercard">27660</a>) (<a href="https://github.com/pytorch/pytorch/pull/29000" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29000/hovercard">29000</a>).</li>
|
||
<li>torch::nn::functional::poisson_nll_loss / nll_loss / cross_entropy / binary_cross_entropy_with_logits (<a href="https://github.com/pytorch/pytorch/pull/28755" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28755/hovercard">28755</a>) (<a href="https://github.com/pytorch/pytorch/pull/29812" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29812/hovercard">29812</a>) (<a href="https://github.com/pytorch/pytorch/pull/28783" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28783/hovercard">28783</a>).</li>
|
||
<li>torch::nn::functional::l1_loss / kl_div / mse_loss / binary_cross_entropy / smooth_l1_loss / ctc_loss (<a href="https://github.com/pytorch/pytorch/pull/27156" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27156/hovercard">27156</a>) (<a href="https://github.com/pytorch/pytorch/pull/28806" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28806/hovercard">28806</a>) (<a href="https://github.com/pytorch/pytorch/pull/30146" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30146/hovercard">30146</a>) (<a href="https://github.com/pytorch/pytorch/pull/27661" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27661/hovercard">27661</a>) (<a href="https://github.com/pytorch/pytorch/pull/28654" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28654/hovercard">28654</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Normalization functions
|
||
<ul>
|
||
<li>torch::nn::functional::layer_norm / instance_norm / clip_grad_norm_ / batch_norm / group_norm / local_response_norm / normalize (<a href="https://github.com/pytorch/pytorch/pull/28032" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28032/hovercard">28032</a>) (<a href="https://github.com/pytorch/pytorch/pull/28790" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28790/hovercard">28790</a>, <a href="https://github.com/pytorch/pytorch/pull/30684" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30684/hovercard">30684</a>) (<a href="https://github.com/pytorch/pytorch/pull/26140" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26140/hovercard">26140</a>, <a href="https://github.com/pytorch/pytorch/pull/29584" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29584/hovercard">29584</a>, <a href="https://github.com/pytorch/pytorch/pull/30216" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30216/hovercard">30216</a>) (<a href="https://github.com/pytorch/pytorch/pull/28176" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28176/hovercard">28176</a>, <a href="https://github.com/pytorch/pytorch/pull/28936" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28936/hovercard">28936</a>) (<a href="https://github.com/pytorch/pytorch/pull/29920" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29920/hovercard">29920</a>) (<a href="https://github.com/pytorch/pytorch/pull/28759" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28759/hovercard">28759</a>) (<a href="https://github.com/pytorch/pytorch/pull/27280" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27280/hovercard">27280</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Activation functions
|
||
<ul>
|
||
<li>torch::nn::functional::elu / leaky_relu / selu / prelu / relu / relu6 / rrelu / celu / glu / gelu (<a href="https://github.com/pytorch/pytorch/pull/27028" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27028/hovercard">27028</a>) (<a href="https://github.com/pytorch/pytorch/pull/27059" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27059/hovercard">27059</a>) (<a href="https://github.com/pytorch/pytorch/pull/27434" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27434/hovercard">27434</a>) (<a href="https://github.com/pytorch/pytorch/pull/27429" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27429/hovercard">27429</a>) (<a href="https://github.com/pytorch/pytorch/pull/27435" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27435/hovercard">27435</a>) (<a href="https://github.com/pytorch/pytorch/pull/27436" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27436/hovercard">27436</a>) (<a href="https://github.com/pytorch/pytorch/pull/27437" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27437/hovercard">27437</a>) (<a href="https://github.com/pytorch/pytorch/pull/27487" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27487/hovercard">27487</a>) (<a href="https://github.com/pytorch/pytorch/pull/29922" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29922/hovercard">29922</a>) (<a href="https://github.com/pytorch/pytorch/pull/28433" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28433/hovercard">28433</a>).</li>
|
||
<li>torch::nn::functional:: log_sigmoid/ log_softmax / softmax / softplus / softmin / softsign / softshrink / hardshrink / tanhshrink / hardtanh / gumbel_softmax / threshold (<a href="https://github.com/pytorch/pytorch/pull/27060" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27060/hovercard">27060</a>) (<a href="https://github.com/pytorch/pytorch/pull/27462" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27462/hovercard">27462</a>) (<a href="https://github.com/pytorch/pytorch/pull/27446" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27446/hovercard">27446</a>) (<a href="https://github.com/pytorch/pytorch/pull/27489" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27489/hovercard">27489</a>) (<a href="https://github.com/pytorch/pytorch/pull/27459" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27459/hovercard">27459</a>) (<a href="https://github.com/pytorch/pytorch/pull/27535" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27535/hovercard">27535</a>) (<a href="https://github.com/pytorch/pytorch/pull/27534" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27534/hovercard">27534</a>) (<a href="https://github.com/pytorch/pytorch/pull/27035" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27035/hovercard">27035</a>) (<a href="https://github.com/pytorch/pytorch/pull/27537" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27537/hovercard">27537</a>) (<a href="https://github.com/pytorch/pytorch/pull/27038" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27038/hovercard">27038</a>) (<a href="https://github.com/pytorch/pytorch/pull/28121" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28121/hovercard">28121</a>) (<a href="https://github.com/pytorch/pytorch/pull/27538" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27538/hovercard">27538</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Embedding functions
|
||
<ul>
|
||
<li>torch::nn::functional::embedding / embedding_bag / one_hot (<a href="https://github.com/pytorch/pytorch/pull/28669" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28669/hovercard">28669</a>) (<a href="https://github.com/pytorch/pytorch/pull/29673" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29673/hovercard">29673</a>) (<a href="https://github.com/pytorch/pytorch/pull/27177" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27177/hovercard">27177</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Linear functions
|
||
<ul>
|
||
<li>torch::nn::functional::linear / bilinear (<a href="https://github.com/pytorch/pytorch/pull/27382" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27382/hovercard">27382</a>) (<a href="https://github.com/pytorch/pytorch/pull/26082" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26082/hovercard">26082</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Padding functions
|
||
<ul>
|
||
<li>torch::nn::functional::pad (<a href="https://github.com/pytorch/pytorch/pull/26601" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26601/hovercard">26601</a>, <a href="https://github.com/pytorch/pytorch/pull/28760" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28760/hovercard">28760</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Vision functions
|
||
<ul>
|
||
<li>torch::nn::functional::affine_grid / grid_sample / interpolate / pixel_shuffle (<a href="https://github.com/pytorch/pytorch/pull/27263" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27263/hovercard">27263</a>) (<a href="https://github.com/pytorch/pytorch/pull/28354" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28354/hovercard">28354</a>) (<a href="https://github.com/pytorch/pytorch/pull/28413" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28413/hovercard">28413</a>) (<a href="https://github.com/pytorch/pytorch/pull/28140" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28140/hovercard">28140</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Distance functions
|
||
<ul>
|
||
<li>torch::nn::functional::pdist (<a href="https://github.com/pytorch/pytorch/pull/27122" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27122/hovercard">27122</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Utility functions
|
||
<ul>
|
||
<li>torch::nn::utils::clip_grad_value_ / parameters_to_vector / vector_to_parameters (<a href="https://github.com/pytorch/pytorch/pull/28736" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28736/hovercard">28736</a>, <a href="https://github.com/pytorch/pytorch/pull/29584" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29584/hovercard">29584</a>) (<a href="https://github.com/pytorch/pytorch/pull/30216" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30216/hovercard">30216</a>) (<a href="https://github.com/pytorch/pytorch/pull/29267" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29267/hovercard">29267</a>).</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h2>AMD Support</h2>
|
||
<ul>
|
||
<li>New features integration
|
||
<ul>
|
||
<li>Enabled RCCL Integration (<a href="https://github.com/pytorch/pytorch/pull/23884" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/23884/hovercard">23884</a>, <a href="https://github.com/pytorch/pytorch/pull/27383" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27383/hovercard">27383</a>, <a href="https://github.com/pytorch/pytorch/pull/27518" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27518/hovercard">27518</a>, <a href="https://github.com/pytorch/pytorch/pull/29385" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29385/hovercard">29385</a>)</li>
|
||
<li>Enabled rocTX and rocTracer Integration (<a href="https://github.com/pytorch/pytorch/pull/27416" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27416/hovercard">27416</a>)</li>
|
||
<li>Improved hiprtc integration (<a href="https://github.com/pytorch/pytorch/pull/27390" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27390/hovercard">27390</a>)</li>
|
||
<li>bfloat16 enablement (initial) on ROCm (<a href="https://github.com/pytorch/pytorch/pull/27719" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27719/hovercard">27719</a>)</li>
|
||
</ul>
|
||
</li>
|
||
<li>Build/CI
|
||
<ul>
|
||
<li>Upgrade to ROCm 2.9 (<a href="https://github.com/pytorch/pytorch/pull/27417" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27417/hovercard">27417</a>)</li>
|
||
<li>Upgrade ROCm CI to Python3.6 (<a href="https://github.com/pytorch/pytorch/pull/30119" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30119/hovercard">30119</a>, <a href="https://github.com/pytorch/pytorch/pull/27353" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27353/hovercard">27353</a>)</li>
|
||
<li>Distribute hipify scripts as part of torch package (<a href="https://github.com/pytorch/pytorch/pull/27425" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27425/hovercard">27425</a>)</li>
|
||
<li>Build and test gfx908 architecture (<a href="https://github.com/pytorch/pytorch/pull/27388" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27388/hovercard">27388</a>)</li>
|
||
<li>Add <code>torch.version.hip</code> (<a href="https://github.com/pytorch/pytorch/pull/29815" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29815/hovercard">29815</a>).</li>
|
||
<li>Build fixes (<a href="https://github.com/pytorch/pytorch/pull/29547" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29547/hovercard">29547</a>, <a href="https://github.com/pytorch/pytorch/pull/29009" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29009/hovercard">29009</a>)</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h2>ONNX</h2>
|
||
<p>In PyTorch 1.4, we have mainly focused on expanding the coverage for ONNX Opset 11, and enabling exporting torchvision models. Most of the torchvision models can be exported to ONNX (Opset 11, with fixed input size), including FasterRCNN, MaskRCNN, and KeypointRCNN. We have also enhanced export support for some tensor indexing scenarios, with more enhancements to come in the next release. In addition, 20+ new PyTorch operators are enabled in ONNX exporter.</p>
|
||
<h3>Expanding Coverage for ONNX Opset 11</h3>
|
||
<ul>
|
||
<li><code>torch.sort/torch.topk</code> are supported in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/25739" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25739/hovercard">25739</a>)</li>
|
||
<li><code>torch.size/torch.squeeze/torch.unsqueeze/torch.mm/torch.index_fill/torch.index_copy</code> are supported in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/27578" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27578/hovercard">27578</a>)</li>
|
||
<li><code>torch.masked_select/torch.masked_scatter</code> are supported in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/25949" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25949/hovercard">25949</a>)</li>
|
||
<li><code>torch.arange</code> is supported in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/26875" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26875/hovercard">26875</a>)</li>
|
||
<li><code>avg_pool, constant_pad_nd, reflection_pad, replication_pad</code> Support enhanced in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/28225" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28225/hovercard">28225</a>)</li>
|
||
<li><code>torch.hardtanh</code> is supported in Opset 11 (<a href="https://github.com/pytorch/pytorch/pull/30169" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30169/hovercard">30169</a>)</li>
|
||
<li>Enable ONNX constant folding for opset 11 (<a href="https://github.com/pytorch/pytorch/pull/29011" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29011/hovercard">29011</a>)</li>
|
||
</ul>
|
||
<h3>Exporting More Torch Operators/Models to ONNX</h3>
|
||
<ul>
|
||
<li><code>torch.remainder</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/24410" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/24410/hovercard">24410</a>)</li>
|
||
<li><code>torch.unfold</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/24970" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/24970/hovercard">24970</a>)</li>
|
||
<li><code>torch.slice/torch.select</code> with negative index are enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/25273" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25273/hovercard">25273</a>, <a href="https://github.com/pytorch/pytorch/pull/26549" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26549/hovercard">26549</a>)</li>
|
||
<li><code>torch.ones/torch.ones_like/torch.zeros/torch.zeros_like/torch.full/torch.full_like</code> with default dtype are enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/27577" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27577/hovercard">27577</a>)</li>
|
||
<li><code>torch.unbind</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/27247" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27247/hovercard">27247</a>)</li>
|
||
<li><code>torch.nn.functional.interpolate</code> export is enhanced (<a href="https://github.com/pytorch/pytorch/pull/27179" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27179/hovercard">27179</a>, <a href="https://github.com/pytorch/pytorch/pull/27566" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27566/hovercard">27566</a>, <a href="https://github.com/pytorch/pytorch/pull/28560" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28560/hovercard">28560</a>, <a href="https://github.com/pytorch/pytorch/pull/29489" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29489/hovercard">29489</a>)</li>
|
||
<li><code>torch.det</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/26958" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26958/hovercard">26958</a>)</li>
|
||
<li><code>torch.group_norm</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/27071" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27071/hovercard">27071</a>)</li>
|
||
<li><code>torch.meshgrid</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/26037" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26037/hovercard">26037</a>)</li>
|
||
<li><code>torch.randn/torch.randn_like</code> are enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/28470" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28470/hovercard">28470</a>, <a href="https://github.com/pytorch/pytorch/pull/29354" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29354/hovercard">29354</a>)</li>
|
||
<li><code>torch.weight_norm</code> enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/28618" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28618/hovercard">28618</a>)</li>
|
||
<li><code>torch.scalar_tensor</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/28713" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28713/hovercard">28713</a>)</li>
|
||
<li><code>torch.logdet</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/29767" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29767/hovercard">29767</a>)</li>
|
||
<li><code>torch.batch_norm</code> 2D with affine=False is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/29458" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29458/hovercard">29458</a>)</li>
|
||
<li><code>torch.bitshift</code> is enabled in exporter (<a href="https://github.com/pytorch/pytorch/pull/28210" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28210/hovercard">28210</a>)</li>
|
||
</ul>
|
||
<h3>Enhancing Export/Test Infra</h3>
|
||
<ul>
|
||
<li>Use deepcopy inputs in ONNX ORT test cases (<a href="https://github.com/pytorch/pytorch/pull/27186" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27186/hovercard">27186</a>)</li>
|
||
<li>Return NotImplemented from all binary math ops (<a href="https://github.com/pytorch/pytorch/pull/27423" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27423/hovercard">27423</a>).</li>
|
||
<li>Disabling ONNX IR v4 sematics for opset 8 or lower (<a href="https://github.com/pytorch/pytorch/pull/28990" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28990/hovercard">28990</a>)</li>
|
||
<li>Add ONNX tests for torchvision models (<a href="https://github.com/pytorch/pytorch/pull/30121" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30121/hovercard">30121</a>)</li>
|
||
<li>Keep output type information while exporting ONNX graph (<a href="https://github.com/pytorch/pytorch/pull/25906" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25906/hovercard">25906</a>)</li>
|
||
</ul>
|
||
<h2>Quantization</h2>
|
||
<p>Quantization updates correspond to a mix of bug-fixes and feature improvements, with feature improvements adding improved operator coverage and performance improvements. We have also made a lot of progress towards enabling graph mode quantization support.</p>
|
||
<ul>
|
||
<li>Feature improvements:
|
||
<ul>
|
||
<li>Enabling intra-op parallelism (<a href="https://github.com/pytorch/pytorch/pull/26692" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26692/hovercard">26692</a>).</li>
|
||
<li>Enabling inplace relu (<a href="https://github.com/pytorch/pytorch/pull/28710" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28710/hovercard">28710</a>).</li>
|
||
<li>Quantized Tensor support copy (<a href="https://github.com/pytorch/pytorch/pull/28612" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28612/hovercard">28612</a>).</li>
|
||
<li>Add quantized torch mean implementation (<a href="https://github.com/pytorch/pytorch/pull/27675" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27675/hovercard">27675</a>).</li>
|
||
<li>Add quantized avg_pool2d for pytorch mobile (<a href="https://github.com/pytorch/pytorch/pull/27631" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27631/hovercard">27631</a>).</li>
|
||
<li>Add nn.quantized.Conv3d (<a href="https://github.com/pytorch/pytorch/pull/29813" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29813/hovercard">29813</a>).</li>
|
||
<li>Adding inplace quantized relu6 (<a href="https://github.com/pytorch/pytorch/pull/29245" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29245/hovercard">29245</a>).</li>
|
||
<li>Fast histogram observer (<a href="https://github.com/pytorch/pytorch/pull/29790" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29790/hovercard">29790</a>).</li>
|
||
<li>PackedSequence support for quantized LSTM (<a href="https://github.com/pytorch/pytorch/pull/29585" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29585/hovercard">29585</a>).</li>
|
||
<li>Improve legacy QuantizedLinear functions to reduce overhead (<a href="https://github.com/pytorch/pytorch/pull/29773" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29773/hovercard">29773</a>).</li>
|
||
<li>Add support for quantized operator conversion from PT to C2 via ONNX (<a href="https://github.com/pytorch/pytorch/pull/29694" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29694/hovercard">29694</a>).</li>
|
||
<li>enable per channel dynamic quantization (<a href="https://github.com/pytorch/pytorch/pull/30122" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30122/hovercard">30122</a>).</li>
|
||
</ul>
|
||
</li>
|
||
<li>Scripting support:
|
||
<ul>
|
||
<li>Make PerChannelMinMaxObserver scriptable using <code>torch.jit.ignore</code> (<a href="https://github.com/pytorch/pytorch/pull/29416" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29416/hovercard">29416</a>).</li>
|
||
<li>Make HistogramObserver scriptable with <code>@torch.jit.ignore</code> (<a href="https://github.com/pytorch/pytorch/pull/27950" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27950/hovercard">27950</a>).</li>
|
||
<li>Fix tracing for dynamic quantized LSTM (<a href="https://github.com/pytorch/pytorch/pull/29331" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29331/hovercard">29331</a>).</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<h2>Visualization</h2>
|
||
<ul>
|
||
<li>Fixed graph visualization: displaying proper names after recent JIT changes (<a href="https://github.com/pytorch/pytorch/pull/30244" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30244/hovercard">30244</a>)</li>
|
||
<li>Support logging embedding for TensorBoard visualizations to generic filesystem (<a href="https://github.com/pytorch/pytorch/pull/27716" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27716/hovercard">27716</a>)</li>
|
||
</ul>
|
||
<h2>Other Improvements</h2>
|
||
<ul>
|
||
<li><code>torch.argmax/argmin</code> Allow half type (<a href="https://github.com/pytorch/pytorch/pull/28787" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28787/hovercard">28787</a>).</li>
|
||
<li><code>torch.cuda.memory_stats / memory_summary</code> instrumentation for CUDA memory allocator (<a href="https://github.com/pytorch/pytorch/pull/27361" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27361/hovercard">27361</a>).</li>
|
||
<li><code>torch.set_num_threads</code> Allow calling multiple times with TBB (<a href="https://github.com/pytorch/pytorch/pull/27190" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27190/hovercard">27190</a>).</li>
|
||
<li><code>torch.set_num_threads</code> Allow calling multiple times in parallel native (<a href="https://github.com/pytorch/pytorch/pull/27947" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27947/hovercard">27947</a>).</li>
|
||
<li><code>torch.logical_xor</code> Allow non-bool tensors (<a href="https://github.com/pytorch/pytorch/pull/27248" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27248/hovercard">27248</a>).</li>
|
||
<li><code>torch.promote_types</code> Nicer error message. (<a href="https://github.com/pytorch/pytorch/pull/27941" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27941/hovercard">27941</a>).</li>
|
||
<li><code>torch.batch_norm_elemt</code> Add an out-variant (<a href="https://github.com/pytorch/pytorch/pull/27621" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27621/hovercard">27621</a>).</li>
|
||
<li><code>torch.lerp</code> Implement derivative with respect to weight (<a href="https://github.com/pytorch/pytorch/pull/28219" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28219/hovercard">28219</a>).</li>
|
||
<li><code>torch.complex32</code> Add type promotion support (<a href="https://github.com/pytorch/pytorch/pull/27929" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27929/hovercard">27929</a>).</li>
|
||
<li><code>torch.unique</code> Support bool tensors (<a href="https://github.com/pytorch/pytorch/pull/28374" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28374/hovercard">28374</a>).</li>
|
||
<li><code>torch.reshape</code> Improve backward for viewable geometries (<a href="https://github.com/pytorch/pytorch/pull/28901" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28901/hovercard">28901</a>).</li>
|
||
<li><code>torch.lu</code> Generalized factorization (<a href="https://github.com/pytorch/pytorch/pull/28608" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28608/hovercard">28608</a>).</li>
|
||
<li><code>torch.equal</code> Add the intra-op parallelism (<a href="https://github.com/pytorch/pytorch/pull/28810" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28810/hovercard">28810</a>).</li>
|
||
<li><code>torch.randint</code> Accept generator=None (<a href="https://github.com/pytorch/pytorch/pull/29748" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29748/hovercard">29748</a>).</li>
|
||
<li><code>torch.bfloat16</code> Enabled for cuda (<a href="https://github.com/pytorch/pytorch/pull/27259" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27259/hovercard">27259</a>).</li>
|
||
<li><code>torch.multinomial</code> Enable for torch.half (<a href="https://github.com/pytorch/pytorch/pull/29266" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29266/hovercard">29266</a>).</li>
|
||
<li><code>nn.RNN</code> Respect the current stream in cudnn (<a href="https://github.com/pytorch/pytorch/pull/27026" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27026/hovercard">27026</a>).</li>
|
||
<li><code>nn.RNN</code> Preserve nonlinearity attribute (<a href="https://github.com/pytorch/pytorch/pull/28058" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28058/hovercard">28058</a>).</li>
|
||
<li><code>nn.Linear</code> Support 0-batch size. (<a href="https://github.com/pytorch/pytorch/pull/27211" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27211/hovercard">27211</a>).</li>
|
||
<li><code>nn.functional.binary_cross_entropy</code> implement double backwards (<a href="https://github.com/pytorch/pytorch/pull/26983" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26983/hovercard">26983</a>).</li>
|
||
<li><code>nn.AdaptiveAvgPool2d</code> Add support for NHWC memory format (<a href="https://github.com/pytorch/pytorch/pull/24396" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/24396/hovercard">24396</a>).</li>
|
||
<li><code>nn.GELU</code> Add GELU activation (<a href="https://github.com/pytorch/pytorch/pull/28944" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28944/hovercard">28944</a>).</li>
|
||
<li><code>nn.LayerNorm</code> Handle batch size of zero (<a href="https://github.com/pytorch/pytorch/pull/28614" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28614/hovercard">28614</a>).</li>
|
||
<li><code>nn.BatchNorm</code> Add NHWC support on cudnn (<a href="https://github.com/pytorch/pytorch/pull/23861" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/23861/hovercard">23861</a>).</li>
|
||
<li><code>nn.BatchNorm2d</code> support torch.channels_last (<a href="https://github.com/pytorch/pytorch/pull/28982" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28982/hovercard">28982</a>).</li>
|
||
<li><code>nn.BatchNorm2d</code> Handle empty inputs (<a href="https://github.com/pytorch/pytorch/pull/30035" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30035/hovercard">30035</a>).</li>
|
||
<li><code>nn.LayerNorm</code> Enable the intra-op parallelism (<a href="https://github.com/pytorch/pytorch/pull/28464" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28464/hovercard">28464</a>).</li>
|
||
<li><code>nn.utils.prune</code> Add pruning functionality (<a href="https://github.com/pytorch/pytorch/pull/24076" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/24076/hovercard">24076</a>).</li>
|
||
<li><code>nn.Sequential</code> Make iterable (<a href="https://github.com/pytorch/pytorch/pull/28987" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28987/hovercard">28987</a>).</li>
|
||
<li><code>dtype.is_signed</code> Ability to differentiate signed dtypes (<a href="https://github.com/pytorch/pytorch/pull/29511" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29511/hovercard">29511</a>).</li>
|
||
<li><code>optim.lr_scheduler.MultiplicativeLR </code>Add new multiplicative learning rate scheduler. (<a href="https://github.com/pytorch/pytorch/pull/27254" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27254/hovercard">27254</a>).</li>
|
||
<li><code>cuda.comm.scatter, gather</code> Add channel-last support (<a href="https://github.com/pytorch/pytorch/pull/28077" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28077/hovercard">28077</a>).</li>
|
||
<li><code>at::parallel_for</code> Choose number of OMP threads based on GRAIN_SIZE (<a href="https://github.com/pytorch/pytorch/pull/26963" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26963/hovercard">26963</a>).</li>
|
||
<li>Return NotImplemented from unsupported tensor arithmetic operators (<a href="https://github.com/pytorch/pytorch/pull/26507" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26507/hovercard">26507</a>).</li>
|
||
<li>Automatically select proper tqdm submodule (<a href="https://github.com/pytorch/pytorch/pull/27108" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27108/hovercard">27108</a>).</li>
|
||
<li>Pickle support for sparse tensors (<a href="https://github.com/pytorch/pytorch/pull/27062" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27062/hovercard">27062</a>).</li>
|
||
<li>Vectorized complex unary and binary op support. (<a href="https://github.com/pytorch/pytorch/pull/26500" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26500/hovercard">26500</a>).</li>
|
||
<li>Complex support for reduce and linpack ops on CPU (<a href="https://github.com/pytorch/pytorch/pull/27653" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27653/hovercard">27653</a>).</li>
|
||
<li>Complex support for compare and pointwise ops on CPU (<a href="https://github.com/pytorch/pytorch/pull/28735" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28735/hovercard">28735</a>).</li>
|
||
<li>Make PyTorch Python 3.8 compatible (<a href="https://github.com/pytorch/pytorch/pull/29302" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29302/hovercard">29302</a>).</li>
|
||
<li>Buffer python warning to avoid deadlocks (<a href="https://github.com/pytorch/pytorch/pull/26613" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26613/hovercard">26613</a>).</li>
|
||
<li>Use NNPACK for strided convolutions. (<a href="https://github.com/pytorch/pytorch/pull/29084" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29084/hovercard">29084</a>).</li>
|
||
</ul>
|
||
<h1>Bug Fixes</h1>
|
||
<h2>Distributed</h2>
|
||
<ul>
|
||
<li>Ensure NCCL error handling code is disabled for NCCL versions < 2.4 (<a href="https://github.com/pytorch/pytorch/pull/27124" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27124/hovercard">27124</a>).</li>
|
||
<li>Fix segmentation fault in <code>FileStore</code> with concurrent accesses. (<a href="https://github.com/pytorch/pytorch/pull/28812" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28812/hovercard">28812</a>).</li>
|
||
<li>Fix DDP incompatibility issue with <code>nn.MultiheadAttention</code> (<a href="https://github.com/pytorch/pytorch/pull/26826" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26826/hovercard">26826</a>).</li>
|
||
</ul>
|
||
<h2>RPC</h2>
|
||
<ul>
|
||
<li>Add <code>ProcessGroupAgent</code> termination detection algorithm (<a href="https://github.com/pytorch/pytorch/pull/26984" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26984/hovercard">26984</a>).</li>
|
||
<li>Fix pybind11 warnings in Python RPC handler implementation (<a href="https://github.com/pytorch/pytorch/pull/27284" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27284/hovercard">27284</a>).</li>
|
||
<li>Defer creating <code>ProcessGroupAgent</code> listener thread until contexts are initialized (<a href="https://github.com/pytorch/pytorch/pull/28013" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28013/hovercard">28013</a>).</li>
|
||
<li>Fix Python RPC handler exit crash (<a href="https://github.com/pytorch/pytorch/pull/27251" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27251/hovercard">27251</a>).</li>
|
||
<li>Fix distributed autograd initialization (<a href="https://github.com/pytorch/pytorch/pull/29069" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29069/hovercard">29069</a>).</li>
|
||
<li>Always include autograd context id in <code>rpc_*</code> / <code>remote</code> requests (<a href="https://github.com/pytorch/pytorch/pull/29781" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29781/hovercard">29781</a>).</li>
|
||
<li>Make <code>RRefContext</code> singleton leaky, deal with module destruct order race. (<a href="https://github.com/pytorch/pytorch/pull/30172" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30172/hovercard">30172</a>).</li>
|
||
</ul>
|
||
<h2>C++ API Bug Fixes</h2>
|
||
<ul>
|
||
<li>at::Tensor::requires_grad_ now supported (<a href="https://github.com/pytorch/pytorch/pull/26332" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26332/hovercard">26332</a>).</li>
|
||
<li>torch::isfinite now supported (<a href="https://github.com/pytorch/pytorch/pull/30083" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30083/hovercard">30083</a>).</li>
|
||
<li>torch::nn::modules_ordered_dict is deprecated (<a href="https://github.com/pytorch/pytorch/pull/28774" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28774/hovercard">28774</a>).</li>
|
||
<li>Add reset_parameters to torch::nn modules (<a href="https://github.com/pytorch/pytorch/pull/29832" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29832/hovercard">29832</a>).</li>
|
||
<li>Allow passing undefined Tensor to Module::register_parameter (<a href="https://github.com/pytorch/pytorch/pull/27948" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27948/hovercard">27948</a>).</li>
|
||
<li>Exclude undefined tensors in the result of Module::parameters() / named_paramters() / buffers() / named_buffers() (<a href="https://github.com/pytorch/pytorch/pull/30626" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30626/hovercard">30626</a>).</li>
|
||
<li>Include hierarchy information in C++ API loading error messages (<a href="https://github.com/pytorch/pytorch/pull/28499" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28499/hovercard">28499</a>).</li>
|
||
<li>Fix a bug: the C++ L-BFGS optimizer does not work properly if there are one or more registered tensors with no grad in the model (<a href="https://github.com/pytorch/pytorch/pull/27606" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27606/hovercard">27606</a>).</li>
|
||
<li>Use c10::variant-based enums for Nonlinearity and FanMode (<a href="https://github.com/pytorch/pytorch/pull/27933" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27933/hovercard">27933</a>). Support for <code>torch::nn::init::Nonlinearity</code> and <code>torch::nn::init::FanMode</code> will be removed in 1.5.</li>
|
||
</ul>
|
||
<h2>JIT</h2>
|
||
<ul>
|
||
<li>Make dropout properly condition on training. (<a href="https://github.com/pytorch/pytorch/pull/29436" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29436/hovercard">29436</a>)</li>
|
||
<li>Fix aten::grad to return optional list (<a href="https://github.com/pytorch/pytorch/pull/29577" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29577/hovercard">29577</a>)</li>
|
||
<li>Fix <code>torch.arange</code> dtype</li>
|
||
<li>Fix type sharing on loaded ScriptModules (<a href="https://github.com/pytorch/pytorch/pull/29826" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29826/hovercard">29826</a>)</li>
|
||
<li>Fix type sharing between traced modules (<a href="https://github.com/pytorch/pytorch/pull/29583" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29583/hovercard">29583</a>)</li>
|
||
<li>Check for mutable default parameters (<a href="https://github.com/pytorch/pytorch/pull/29833" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29833/hovercard">29833</a>)</li>
|
||
<li>Fix tracing of autograd functions (<a href="https://github.com/pytorch/pytorch/pull/29791" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29791/hovercard">29791</a>)</li>
|
||
<li>Check for unrolled loop in break & continue (<a href="https://github.com/pytorch/pytorch/pull/29474" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29474/hovercard">29474</a>)</li>
|
||
<li>Fix negative string indexing (<a href="https://github.com/pytorch/pytorch/pull/22700" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/22700/hovercard">22700</a>)</li>
|
||
<li>Make jit.trace_module reentrant (<a href="https://github.com/pytorch/pytorch/pull/29411" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29411/hovercard">29411</a>)</li>
|
||
<li>Fix jit outplace tracing and reapply changes to _like operators. (<a href="https://github.com/pytorch/pytorch/pull/28839" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28839/hovercard">28839</a>)</li>
|
||
<li>Properly guard against inheritance on TorchScript classes (<a href="https://github.com/pytorch/pytorch/pull/28407" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28407/hovercard">28407</a>)</li>
|
||
<li>Fix when giving jit format warning about unsupported options (<a href="https://github.com/pytorch/pytorch/pull/28616" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28616/hovercard">28616</a>)</li>
|
||
<li>Fix handling of function attributes. (<a href="https://github.com/pytorch/pytorch/pull/28569" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28569/hovercard">28569</a>)</li>
|
||
<li>Fix pushLong() issue in pickler. (<a href="https://github.com/pytorch/pytorch/pull/28057" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28057/hovercard">28057</a>)</li>
|
||
<li>Fix broken name mangling (<a href="https://github.com/pytorch/pytorch/pull/27511" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27511/hovercard">27511</a>)</li>
|
||
<li>Fix segfault while printing value type for an error msg in emitListComprehension (<a href="https://github.com/pytorch/pytorch/pull/27261" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27261/hovercard">27261</a>)</li>
|
||
<li>Fix <code>toIValue</code> dict iteration (<a href="https://github.com/pytorch/pytorch/pull/26856" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26856/hovercard">26856</a>)</li>
|
||
<li>Fix race condition in Function::optimized_graph(). (<a href="https://github.com/pytorch/pytorch/pull/27012" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27012/hovercard">27012</a>)</li>
|
||
<li>Sanitize module names on legacy import (<a href="https://github.com/pytorch/pytorch/pull/27764" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27764/hovercard">27764</a>)</li>
|
||
<li>Python None should have its type inferred as NoneType (<a href="https://github.com/pytorch/pytorch/pull/26665" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26665/hovercard">26665</a>)</li>
|
||
<li>Properly set existing attributes under recursive script (<a href="https://github.com/pytorch/pytorch/pull/27514" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27514/hovercard">27514</a>)</li>
|
||
</ul>
|
||
<h2>Quantization</h2>
|
||
<ul>
|
||
<li>Skip copy_same_type_transpose_ for quantized tensor (<a href="https://github.com/pytorch/pytorch/pull/29609" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29609/hovercard">29609</a>).</li>
|
||
<li>Add note that cuda quantization is not supported (<a href="https://github.com/pytorch/pytorch/pull/27829" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27829/hovercard">27829</a>).</li>
|
||
<li>Rename _intrinsic to intrinsic (<a href="https://github.com/pytorch/pytorch/pull/27194" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27194/hovercard">27194</a>).</li>
|
||
<li>Better error message for quantized dispatch (<a href="https://github.com/pytorch/pytorch/pull/28635" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28635/hovercard">28635</a>).</li>
|
||
<li>Update the misleading comments for zero_points and scale in dynamic quant linear module [1/2] (<a href="https://github.com/pytorch/pytorch/pull/28767" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28767/hovercard">28767</a>).</li>
|
||
<li>Avoid the misleading zero_point and scale [2/2] (<a href="https://github.com/pytorch/pytorch/pull/28827" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28827/hovercard">28827</a>).</li>
|
||
<li>Add the warning message for API with linear modules (<a href="https://github.com/pytorch/pytorch/pull/28766" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28766/hovercard">28766</a>).</li>
|
||
<li>Do not insert observers for empty sequential modules (<a href="https://github.com/pytorch/pytorch/pull/28384" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28384/hovercard">28384</a>).</li>
|
||
<li>Fix the padding issue of quantized average pool operator (<a href="https://github.com/pytorch/pytorch/pull/28260" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28260/hovercard">28260</a>).</li>
|
||
</ul>
|
||
<h2>Mobile</h2>
|
||
<ul>
|
||
<li>Fix deadlock issues in ThreadPool (<a href="https://github.com/pytorch/pytorch/pull/29885" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29885/hovercard">29885</a>).</li>
|
||
<li>Disable ProfilingGraphExecutorImpl for mobile (<a href="https://github.com/pytorch/pytorch/pull/30067" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30067/hovercard">30067</a>).</li>
|
||
</ul>
|
||
<h2>Other Bug fixes</h2>
|
||
<ul>
|
||
<li>
|
||
<p><code>torch.kthvalue</code> Fix CUDA shared memory out of bound access in findPattern (<a href="https://github.com/pytorch/pytorch/pull/28989" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28989/hovercard">28989</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.save</code> Fix source files not being saved (<a href="https://github.com/pytorch/pytorch/pull/28965" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28965/hovercard">28965</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.load</code> Fix OSError loading files larger than 2GB. (<a href="https://github.com/pytorch/pytorch/pull/27125" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27125/hovercard">27125</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.linspace</code> clearer error message for negative step sizes. (<a href="https://github.com/pytorch/pytorch/pull/28274" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28274/hovercard">28274</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.histc</code> Add range checks to avoid segfaults (<a href="https://github.com/pytorch/pytorch/pull/27712" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27712/hovercard">27712</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.lu</code> Fix thread<code> </code>local issue on cpu (<a href="https://github.com/pytorch/pytorch/pull/28546" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28546/hovercard">28546</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.max_pool2d</code> Limit tensor size to max CUDA grid size (<a href="https://github.com/pytorch/pytorch/pull/28931" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28931/hovercard">28931</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.renorm</code> Fix a memory leak in CUDA renorm. (<a href="https://github.com/pytorch/pytorch/pull/29873" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29873/hovercard">29873</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.index_add</code> Fix bug in atomicAdd on CUDA for some dtypes (<a href="https://github.com/pytorch/pytorch/pull/29231" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29231/hovercard">29231</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.addmm</code> Fix handling of empty tensors (<a href="https://github.com/pytorch/pytorch/pull/28613" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28613/hovercard">28613</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.CTCLoss</code> Fix incorrect gradient for large target sizes (<a href="https://github.com/pytorch/pytorch/pull/27460" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27460/hovercard">27460</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.functional.ctc_loss</code> Fix incorrect gradient on cudnn (<a href="https://github.com/pytorch/pytorch/pull/27039" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27039/hovercard">27039</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.Embedding</code> Incorrect gradient at padding_idx in cuda kernel. (<a href="https://github.com/pytorch/pytorch/pull/27731" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27731/hovercard">27731</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.LayerNorm</code> Fix an illegal memory access error (<a href="https://github.com/pytorch/pytorch/pull/28196" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28196/hovercard">28196</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.Conv2d</code> handle zero stride (<a href="https://github.com/pytorch/pytorch/pull/28784" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28784/hovercard">28784</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.PoissonNLLLoss</code> Fix incorrect result with <code>full=True</code> (<a href="https://github.com/pytorch/pytorch/pull/28637" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28637/hovercard">28637</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.AvgPool2d</code> fix an overflow for 2^31-1 sized inputs (<a href="https://github.com/pytorch/pytorch/pull/30793" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30793/hovercard">30793</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.RNNBase</code> Fix an issue with use of children of RNN third party device types (<a href="https://github.com/pytorch/pytorch/pull/28562" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28562/hovercard">28562</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.Upsample</code> Fix “invalid configuration argument” error (<a href="https://github.com/pytorch/pytorch/pull/28927" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28927/hovercard">28927</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>nn.Upsample</code> Fix a CUDA launch config failure (<a href="https://github.com/pytorch/pytorch/pull/29016" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29016/hovercard">29016</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>optim.lr_scheduler.OneCycleLR</code> Correctly handle div_factor parameter (<a href="https://github.com/pytorch/pytorch/pull/28217" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28217/hovercard">28217</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>PackedSequence.to</code> Ensure all tensors are moved (<a href="https://github.com/pytorch/pytorch/pull/27245" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27245/hovercard">27245</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>EventList.total_average</code> Fix a regression caused by missing <strong>iadd</strong> (<a href="https://github.com/pytorch/pytorch/pull/27498" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27498/hovercard">27498</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>Tensor.record_stream</code> Ensure stream is recorded for shifted view tensors (<a href="https://github.com/pytorch/pytorch/pull/27371" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27371/hovercard">27371</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>torch.hub</code> Handle branch names containing a slash. (<a href="https://github.com/pytorch/pytorch/pull/27960" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27960/hovercard">27960</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p>Fix error handling in Magma kernels (<a href="https://github.com/pytorch/pytorch/pull/29003" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29003/hovercard">29003</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p>Fix avx for c++14 (<a href="https://github.com/pytorch/pytorch/pull/28207" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28207/hovercard">28207</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p>Fix illegal memory access thread safety issue in sparse CUDA (<a href="https://github.com/pytorch/pytorch/pull/29426" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29426/hovercard">29426</a>).</p>
|
||
</li>
|
||
<li>
|
||
<p><code>__cuda_array_interface__</code> Fix stride calculation (<a href="https://github.com/pytorch/pytorch/pull/31450" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/31450/hovercard">31450</a>).</p>
|
||
</li>
|
||
</ul>
|
||
<h1>Deprecations</h1>
|
||
<h3><strong>Python 2 support is deprecated and will not be supported in the 1.5 release.</strong></h3>
|
||
<h3><code>torch.optim</code>: <code>Scheduler.step(epoch)</code> is now deprecated; use <code>Scheduler.step()</code> instead. (<a href="https://github.com/pytorch/pytorch/pull/26423" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/26423/hovercard">26432</a>)</h3>
|
||
<p>For example:</p>
|
||
<pre><code>>>> for epoch in range(10):
|
||
>>> optimizer.step()
|
||
>>> scheduler.step(epoch)
|
||
DeprecationWarning: The epoch parameter in `scheduler.step()` was not necessary and is being deprecated where possible. Please use `scheduler.step()` to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose.
|
||
warnings.warn(EPOCH_DEPRECATION_WARNING, DeprecationWarning)
|
||
</code></pre>
|
||
<h3><strong>[C++]</strong> C++11 is deprecated and will not be supported in the 1.5 release.</h3>
|
||
<h3><strong>[C++]</strong> <code>Tensor::is_variable()</code> has been deprecated. As noted in the <strong>Backwards Incompatible Changes</strong> section, the distinction between variable and non-variable has been eliminated, so this check is no longer meaningful. Generally, <code>is_variable()</code> will now return true except in some special circumstances (see <a href="https://github.com/pytorch/pytorch/pull/29653" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29653/hovercard">29653</a> for more details). (<a href="https://github.com/pytorch/pytorch/pull/29653" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29653/hovercard">29653</a>)</h3>
|
||
<h3><strong>[C++]</strong> <code>torch::nn::modules_ordered_dict</code> has been deprecated. It is generally no longer necessary and can just be removed. (<a href="https://github.com/pytorch/pytorch/pull/28774/" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28774/hovercard">28774</a>)</h3>
|
||
<h3><code>torch.jit.quantized</code> API has been deprecated in favor of <code>torch.quantization.quantize_dynamic</code> (<a href="https://github.com/pytorch/pytorch/pull/28766" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28766/hovercard">28766</a>)</h3>
|
||
<h1>Performance</h1>
|
||
<p>A benchmark suite is available to easily measure the performance of operators with a range of input shapes. The generated benchmark data fully characterize the performance of operators in terms of execution time. For more details see README.md in the benchmarks/operator_benchmark directory.</p>
|
||
<ul>
|
||
<li><code>torch.nn.functional.threshold, torch.nn.functional.layer_norm, torch.cdist</code> Performance of threshold (CPU), layer norm (CUDA) and cdist operations was improved (<a href="https://github.com/pytorch/pytorch/pull/27155" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27155/hovercard">27155,</a><a href="https://github.com/pytorch/pytorch/pull/27634" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27634/hovercard">27634</a>, <a href="https://github.com/pytorch/pytorch/pull/25799" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/25799/hovercard">25799</a>)</li>
|
||
<li><code>torch.Tensor.fill_</code> Performance for half and bfloat16 types on CPU was improved (<a href="https://github.com/pytorch/pytorch/pull/28397" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28397/hovercard">28397</a>).</li>
|
||
<li><code>torch.nn.MaxPool2d</code> implementation for channels_last format was added (<a href="https://github.com/pytorch/pytorch/pull/24872" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/24872/hovercard">24872</a>)</li>
|
||
<li>There is a fast pass reducing the overheads of pointwise operations relying on TensorIterator under certain conditions (contiguous inputs, no broadcast) (<a href="https://github.com/pytorch/pytorch/pull/29180" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29180/hovercard">29180</a>).</li>
|
||
<li>Overheads of operations with scalars/number literals was improved (<a href="https://github.com/pytorch/pytorch/pull/29915" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/29915/hovercard">29915</a>).</li>
|
||
<li>In case of type promotion on the GPU, the values are converted on the fly, without explicit casting of the full tensor (<a href="https://github.com/pytorch/pytorch/pull/30018" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/30018/hovercard">30018</a>).</li>
|
||
<li>reorder_dimensions in TensorIterator favors output write locality, improving overall performance when operating on discontiguous tensors (<a href="https://github.com/pytorch/pytorch/pull/28615" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28615/hovercard">28615</a>).</li>
|
||
<li>Float pickling speed was improved (<a href="https://github.com/pytorch/pytorch/pull/28553" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28553/hovercard">28553</a>).</li>
|
||
<li>GRAIN_SIZE for intra-op parallelization was unified between TH and ATen operations (<a href="https://github.com/pytorch/pytorch/pull/28770" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/28770/hovercard">28770</a>)</li>
|
||
<li><code>tensor.numel</code> devirtualized, improving performance (<a href="https://github.com/pytorch/pytorch/pull/27294" data-hovercard-type="pull_request" data-hovercard-url="/pytorch/pytorch/pull/27294/hovercard">27294</a>)</li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
<details
|
||
class="details-reset Details-element border-top pt-3 mt-4 mb-2 mb-md-4"
|
||
open
|
||
|
||
>
|
||
<summary>
|
||
<div class="d-flex flex-items-center">
|
||
<span class="mr-2 Details-content--closed"><svg class="octicon octicon-triangle-right" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg></span>
|
||
<span class="mr-2 Details-content--open"><svg class="octicon octicon-triangle-down" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 5l6 6 6-6H0z"/></svg></span>
|
||
<span class="text-bold">Assets</span>
|
||
<span class="ml-1 Counter">2</span>
|
||
</div>
|
||
</summary>
|
||
<div class="Box Box--condensed mt-3">
|
||
<div>
|
||
|
||
|
||
<div class="d-block py-1 py-md-2 Box-body px-2">
|
||
<a href="/pytorch/pytorch/archive/v1.4.0.zip" rel="nofollow" class="d-flex flex-items-center">
|
||
<svg class="octicon octicon-file-zip flex-shrink-0 text-gray" width="16" height="16" viewBox="0 0 12 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8.5 1H1a1 1 0 00-1 1v12a1 1 0 001 1h10a1 1 0 001-1V4.5L8.5 1zM11 14H1V2h3v1h1V2h3l3 3v9zM5 4V3h1v1H5zM4 4h1v1H4V4zm1 2V5h1v1H5zM4 6h1v1H4V6zm1 2V7h1v1H5zM4 9.28A2 2 0 003 11v1h4v-1a2 2 0 00-2-2V8H4v1.28zM6 10v1H4v-1h2z"/></svg>
|
||
<span class="px-1 text-bold">Source code</span> (zip)
|
||
</a>
|
||
</div>
|
||
<div class="d-block py-1 py-md-2 Box-body px-2">
|
||
<a href="/pytorch/pytorch/archive/v1.4.0.tar.gz" rel="nofollow" class="d-flex flex-items-center">
|
||
<svg class="octicon octicon-file-zip flex-shrink-0 text-gray" width="16" height="16" viewBox="0 0 12 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8.5 1H1a1 1 0 00-1 1v12a1 1 0 001 1h10a1 1 0 001-1V4.5L8.5 1zM11 14H1V2h3v1h1V2h3l3 3v9zM5 4V3h1v1H5zM4 4h1v1H4V4zm1 2V5h1v1H5zM4 6h1v1H4V6zm1 2V7h1v1H5zM4 9.28A2 2 0 003 11v1h4v-1a2 2 0 00-2-2V8H4v1.28zM6 10v1H4v-1h2z"/></svg>
|
||
<span class="px-1 text-bold">Source code</span> (tar.gz)
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</details>
|
||
|
||
|
||
</div><!-- /.release-body -->
|
||
</div><!-- /.release -->
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</main>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
<div class="footer container-lg width-full p-responsive" role="contentinfo">
|
||
<div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
|
||
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
|
||
<li class="mr-3 mr-lg-0">© 2020 GitHub, Inc.</li>
|
||
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
|
||
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
|
||
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
|
||
<li class="mr-3 mr-lg-0"><a href="https://githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
|
||
<li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
|
||
</ul>
|
||
|
||
<a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
|
||
<svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/></svg>
|
||
</a>
|
||
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
|
||
<li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
|
||
<li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
|
||
<li class="mr-3 mr-lg-0"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
|
||
<li class="mr-3 mr-lg-0"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
|
||
<li class="mr-3 mr-lg-0"><a href="https://github.blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
|
||
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="d-flex flex-justify-center pb-6">
|
||
<span class="f6 text-gray-light"></span>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div id="ajax-error-message" class="ajax-error-message flash flash-error">
|
||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 000 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 00.01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
|
||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||
</button>
|
||
You can’t perform that action at this time.
|
||
</div>
|
||
|
||
|
||
<script crossorigin="anonymous" async="async" integrity="sha512-VTkKwyyXYz1e8w0v/7LXDKSa7yMy1qEQofgf/5bGrUv8wpbpaZxx5S3Uc6oYrvbOe432HJdJG5qsFdM9sbP+wg==" type="application/javascript" id="js-conditional-compat" data-src="https://github.githubassets.com/assets/compat-bootstrap-55390ac3.js"></script>
|
||
<script crossorigin="anonymous" async="async" integrity="sha512-3yNijdFdVDBZQDWrBvMeD2J9gyXwI5MKUMJSWdEGP44DgS4NEPQw2TmVlDdNAWrseJO5C/sXBSTrL24DvGMDJw==" type="application/javascript" src="https://github.githubassets.com/assets/vendor-df23628d.js"></script>
|
||
<script crossorigin="anonymous" integrity="sha512-pa+/BDovC8blIaZGNtVJ69/u0z2fhC5e/L9DzR8BO6t9Hl4djSDIShYmnFiMrfMSQ+T/H593bhxDcb3MBV/kTA==" type="application/javascript" src="https://github.githubassets.com/assets/frameworks-a5afbf04.js"></script>
|
||
|
||
<script crossorigin="anonymous" async="async" integrity="sha512-3bq0hvgN3zABpTqliAmMBZcvVdvGiXaOuEXP1rDTfDoX5PaddILM/Sw1FCotmCXDHg8X/0GxDF+GYMHY1xC4aA==" type="application/javascript" src="https://github.githubassets.com/assets/github-bootstrap-ddbab486.js"></script>
|
||
|
||
|
||
|
||
<div class="js-stale-session-flash flash flash-warn flash-banner" hidden
|
||
>
|
||
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 000 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 00.01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
|
||
<span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||
<span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||
</div>
|
||
<template id="site-details-dialog">
|
||
<details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open>
|
||
<summary role="button" aria-label="Close dialog"></summary>
|
||
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
|
||
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
|
||
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
|
||
</button>
|
||
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
|
||
</details-dialog>
|
||
</details>
|
||
</template>
|
||
|
||
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
|
||
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
|
||
</div>
|
||
</div>
|
||
|
||
<div aria-live="polite" class="js-global-screen-reader-notice sr-only"></div>
|
||
|
||
</body>
|
||
</html>
|
||
|