Reusable Execution in Production Using Papermill (Google Cloud AI Huddle)

[음악 재생] MATTHEW SEAL : 멋진 소개 주셔서 감사합니다 여기 와서 얘기하고 얻을 수있어서 기쁘다

우리가 작업 해 온 것에 대해 오픈 소스 커뮤니티에서 우리가 어떻게 공동 작업하는지 Google 클라우드 팀과 당신이 방에있는 디자이너라면, 내가 잠깐 눈을 감으니 프레 젠 테이션 신성 모독 우리는 거기에 갈 이제 열 수 있습니다 우리는 새로운 사이트 집합에 있습니다

오늘 여기에서 저는 조금 이야기 할 것입니다 노트북 주변의 주제에 대해 설명하고 조금 설명합니다 어떤 노트인지, 그들이 무엇인지, 그런 다음 어떻게이를 사용하여 노트북을 더 가까이에 배치했는지 프로덕션 도구로 보내고이를 호출 할 수있는 기술 제지 공장 그래서 저는 저를위한 바이오 인트로가 이미 존재했다고 생각합니다 넷플 릭스의 대형 데이터 오케스트레이션 팀에서 일하고 있습니다

그리고 이것이 정말로 제가 잠시 후에 설명 할 것을 의미합니다 그리고 네 한 번 전에이 얘기를 했어 그래서 희망을 갖고 이것은 정말로 좋게 될 것이다 그리고 우리는 잠수 할 수있을 것이다

사물에 조금 더 깊게 그리고 나중에 모두와 연결하고 볼 수있어서 기쁩니다 너의 생각은 어때? 시작하기 위해, 우리는 조금 이야기 할 것입니다 데이터 플랫폼 팀은 무슨 일을합니까? 이것은 놀랍게도 신비한 일입니다 심지어 데이터 플랫폼 팀 때때로 회원들

그래서 나는 약간의 윤곽을 줄 것이다 Netflix에서 데이터 플랫폼 팀이하는 일 따라서 데이터 플랫폼 팀은 실제로 이러한 도구와 서비스를 자신의 일을하는 사용자의 방해가되지 않도록하십시오 그래서 당신은 왼쪽에 물건이 있습니다 슬라이드의 여기에 이벤트 나 사용자가있을 수 있습니다

입력 또는 시스템 메트릭과 큰 데이터라는이 모호한 아이디어에 기여합니다 모든 데이터가 수집되고 어떻게 든 필요합니다 비즈니스 결정을 내릴 최종 결과를 얻으려면 보고서 주변 또는 개인에게 정보 전달 또는 AI를위한 데이터 모델 만들기 그리고 하루가 끝날 때, 사용자 할 수 있기를 원해 데이터 엔지니어 또는 기계 학습 개발자로서, 그들은 이러한 결과를 만들기 위해이 데이터를 사용할 수 있기를 원합니다

Netflix의 데이터 플랫폼 서비스 도구를 만드는 것에 관한 것입니다 이러한 사용자가 자신의 업무를보다 쉽고 쉽게 수행 할 수 있습니다 그래서 우리는 많은 통합 작업을 수행합니다 다양한 시스템과 플랫폼 및 도구 그래서 그들은 사용자의 존재를 방해하지 않는다 그것을 성취 할 수 있습니다

따라서 데이터 플랫폼 팀이 무엇인지, 문, 그냥 그 문이 아니야 오늘 내가 말할 모든 것들 실제로는 오픈 소스 프로젝트입니다 이것이 Jupyter 오픈 소스 생태계를 둘러싼 것입니다 및 합류 생태계 그들은 둘 다 노트북 주위에 다른 도구를 만들고 있습니다

그리고 그들은 상호 호환성이 있습니다 그것들은 전체적으로 다른 프로젝트가 아닙니다 그리고이 모든 것들이 공헌되었습니다 Netflix 및 Google Cloud에 의해 통합 제공 플랫폼으로, 도구로, 또는 모든 사람에게 일반적인 유용성을 제공합니다 매우 빠르고, 얼마나 많은 사람들이 노트북이 무엇인지 알고 있습니다

노트북을 사용 했습니까? 얼마나 많은 사람들이 Jupyter 노트북과 다른 노트북은 무엇입니까? 시원한 우리는 네 명이있어 그래서 저는 조금 이야기 할 것입니다 차이점이 있습니다 그리고 노트북을 사용하지 않은 당신을 위해, 무엇을 도대체 그들이 뭐야? 그래서 가장 기본적인 맥락에서 노트북은 – 인터페이스와 같은 것을 보게 될 것입니다

[INAUDIBLE] 이것은 노트북입니다 기본적으로 제공하는 인터페이스입니다 코드와 문서의 세분화 된 덩어리 보내고받은 로그 일부 원격 [INAUDIBLE] 또는 로컬 REPL로부터 그래서 너는 엔진을 가지고있어 코드를 실행하거나 문서 요청을 실행하는 방법 어떤 일이 일어 났는지에 대한 표시와 결과를 되돌려 줄 수 있습니다

여기이 예제에서는 정말 기본적인 노트북이 있습니다 이미지를 가져 오면 이미지가 나타납니다 노트북에서 이미지를 렌더링하려고합니다 그런 다음 일부 텍스트를 인쇄하십시오 정말 근본적인 것들이지만, 당신은 이 코드와 실행 그룹을 볼 수 있습니다

멋지고 흐르는 방식으로 그리고 이것을 다른 인터페이스로 볼 수 있습니다 노트북 용이지만 똑같은 기술입니다 이것들은 모두 Jupyter 노트북 인터페이스입니다 특히이 기술을 사용하면 얻을 수있는 이점 코드 로그, 문서, 실행 결과는 모두 동일한 문서에 저장되며, 이 문서는 다른 사람들과 공유 할 수 있습니다

이것은 iterative 개발에 정말로 유용하다는 것을 의미합니다 동료들과 결과를 공유하는 것이 매우 편리합니다 다양한 API 호출을 통합 할 수 있습니다 하나의 중심부에 잘 형성되어 있습니다 이 페이지의 내용에 대해 조금 설명해주십시오

그게 무엇을 상징합니까? 그게 무슨 뜻이야? 따라서 상태 또는 저장과 같은 것들이 있습니다 오른쪽 상단의 표시기 또는 연결에 대한 설명 커널에 실제로 코드를 실행시키는 것입니다 표준 메뉴 항목이 있습니다 여기에 코드 셀이라는 것이 있습니다 그래서 제가 설명한 것은 코드 셀입니다

그것은 텍스트를 나타내는 청크입니다 특정 언어 또는 프레임 워크의 코드 Jupyter Notebooks는 실제로 언어에 구애받지 않습니다 대부분의 시간 동안 당신은 그들을 볼 것입니다 아마 파이썬에서 가장 인기있는 커널 유형

여기에는 기본적인 파이썬 코드가 있습니다 어쩌면 모델에로드하고 내 모델에 있다고 주장 할 수 있습니다 그것의 어떤 버전 그리고 나서 아마 그 모델에서 뭔가를 끌어 내고 싶을 것입니다 그것을 표시하십시오

따라서 노트북에서 정말 유용한 두 번째 부분 데이터 또는 그래프 또는 이미지를 표시하는 기능입니다 또는 같은 장소에서 HTML을 바로 사용할 수 있습니다 점프 할 필요가 없도록 코드를 정의합니다 시스템간에 결과를 볼 수 있습니다 노트북에 관한 또 다른 멋진 이야기 하나의 셀만 다시 실행할 수 있습니다

그래서 그들은 상태를 추적합니다 실행하면 선형으로 모든 것을 연속적으로 실행할 수 있습니다 우리가 나중에 할 것 인 것처럼 아니면 iterating하고 알아 내려고하는 경우 실제로 얻으려는 디스플레이가 어디에 있는지, 당신은 그것을 찾아보고, 셀을 돌릴 수 있습니다 실패 할 경우 변경하십시오

셀을 재실행하십시오 모델로드를 재실행 할 필요가 없습니다 이전에 세포에서 일어났습니다 이미로드되었고, 당신은 단지 반복하고 있습니다 라이브 코드 세션에서

우리는 이미 여기서 승리를 거두었습니다 하지만 주로이 친숙한 인터페이스입니다 데이터 탐색 및 문제 탐구에 사용됩니다 그럼이 일은 어때? 그래서 Jupyter 공간에서 독립적입니다 다른 유형의 노트북 중 Jupyter 공간은 실제로 실제로 프로토콜 정의에 관한 것입니다

코드 간 통신 방법 그녀와 프런트 엔드 또는 클라이언트를 실행하십시오 실제로 이것을 실행하려고합니다 그래서 당신은 이런 것을 얻을 것입니다 왼쪽 상단에 일부 사용자가 있고 그 사용자 – 예, 왼쪽 상단도 마찬가지입니다 따라서 사용자는 왼쪽 상단에 있습니다

그리고 그들은 모두 일종의 Jupyter UI를 사용할 것입니다 그리고 그들은 문서를 가지고 있습니다 노트북 그런 다음 UI를 통해 상호 작용합니다 코드와 통신하는 Jupyter 서버 executor가 커널을 호출했습니다

그리고 기본적으로 요청을 앞뒤로 전달합니다 커널을 통해 그리고 나서, 커널에 프로토콜이 있습니다 다음과 같이 다른 UI 또는 인터페이스의 모든 클라이언트 자신의 디스플레이로 같은 것을 할 수 있습니다 그와 다른 노트북 사이의 차이점은, 잠시 뒤로 물러서십시오

다른 노트북에서는 자주 커널을 묶습니다 및 서버를 함께 사용합니다 그래서 그들은 클라이언트에게 API 계층만을 갖게 될 것이고, 그리고 그들은 당신이 실제로 어떻게 실행하십시오 이는 더 힘들어지고 어렵다는 것을 의미합니다 새로운 유형의 커널을 만들고 싶다면, 새로운 유형의 언어를 실행하기 만하면됩니다

또는 새로운 UI를 만들고 싶다면 여기에서 더 많은 것을 재발견해야합니다 커널과 UI API는 모두 독립적 인 단위입니다 그것은 모두 잘 사양입니다 그래서 많은 다른 맛을 볼 수 있습니다 우리가 오늘 말하고있는 것과 같은 UI와 확장 기능을 제공합니다

그리고 그것은 Jupyter 노트북 공간을 제공합니다 다른 노트북 옵션보다 많은 장점이 있습니다 그래서 우리는 이것이 왜 생겨 났는지에 관해 조금 이야기 할 것입니다 어떻게 사람들이 노트북을 사용하게 될지 궁금해합니다 특히 한 번도 사용한 적이없는 경우 누군가가 좋아, 정말 필요해

이 노트북을 생산에 사용하려면, 이게 뭐야? 어디서 왔어? 그것이 어디서 왔는지는이 능력이었다 데이터를 탐색하고 분석하여 결과를 찾습니다 따라서 데이터 과학자 워크 플로에는 매우 편리했습니다 로드하는 데 비용이 많이 드는 데이터를로드해야하는 경우, 그리고 모델을 반복해서 반복해야합니다 그리고 아마 내 최종 코드가 어떻게 생겼는지 모르겠다

어쩌면 내가 아직 해야할지조차 모른다 그래서 그것을 탐험하는 정말 좋은 방법이됩니다 매우 비싼 모든면을 재 계산할 필요없이 귀하의 코드입니다 그리고 이것은 이것이 특정 워크 플로에 대해 좋은 품질을 제공합니다 또한 출력을 녹음 할 수 있습니다

또한 도구를 수정하기도 쉽습니다 이 노트북을 다른 사람과 공유 할 수 있습니다 그들은 내가하고있는 것을 재현 할 수있다 그리고 그들은 그것을 가지지 않고 약간 수정할 수 있습니다 많은 시스템을 이해합니다

파일을 보내면됩니다 재현성이 있습니다 하지만 할 일이 많이 있습니다 시도에 좌절 한 엔지니어링 팀 스크래치 패드에서 개발 주기로 옮기기 실제 생산 시스템으로 그리고 이러한 것들 중 일부는 역사가 부족한 것입니다 실수로 셀을 편집하여 저장 한 경우, 그것은 당신이 편집 한 것을 말하지 않고, 때로는 실제로 한 일을 찾아내는 것이 어렵습니다

특히 브라우저 나 다른 것을 닫을 때 더욱 그렇습니다 그들은 전통적으로 테스트하기가 정말로 어려울 수 있습니다 그래서 누군가는 1,000 줄의 코드를 작성할 것이며, 그것을 벽에 넘겨주고 10,000 줄의 코드를 물어보십시오 이 제품을 생산에 사용하도록 요청하십시오 너도 마찬가지야

어떻게 작동하는지 또는 안정적으로 작동하는지 모르겠습니다 또한 변경 가능한 문서이기 때문에 항상 편집하고 있습니다 전통적인 UI에서 제자리를 찾는다 그리고 이런 의미에서 협력하기가 어려워집니다 그 문서를 편집하려고하는 두 사람 때문에 동시에 많은 문제가 발생할 수 있습니다

프로토콜을 확장하지 않아도됩니다 Netflix에서 한 가지 일은 이러한 격차를 메우려 고 노력하십시오 우리에게는 노트북을 사용하는 많은 사용자가있었습니다 우리가 본 것은 그 대신에 노트북을 사용하지 못하게하려는 사람들, 우리는 말했다, 좋아, 우리는 꽤 큰 숫자를 가지고있다 이 환경에서 일하는 것을 좋아하는 사용자 중 그들은 마찰과 고통을 많이 겪고 있습니다

이미 설치된 시스템으로 이동합니다 그래서 그들은 종종 재 작성해야했습니다 그들이 한 일이나 다른 누군가에게 다시 쓰게 한 모든 일 그들이 똑같은 패턴으로 다른 곳에서 한 모든 일 그들은 이미 해결했습니다 그래서 우리가하고 싶은 일들은 정말로 이 노트북이 그렇지 않다는 사실을 개선하는 데 도움이됩니다 버전이기 때문에 실제로 당신이 무엇인지 알아내는 것은 어렵습니다

특별한 시간에 뛰었습니다 그것들은 가변적 인 상태입니다 그리고 그들은 실제로 템플릿 화 될 수 없습니다 항상 인간이 UI에서 편집을해야합니다 변수를 다시 실행하여 변수를 다시 실행하십시오

매우 프로그래밍 방식의 패턴 그러나 우리가 정말로 보존하고 싶었던 어떤 것들 코드 바로 옆에 결과가 연결되어 있었고, 좋은 영상이 있었으며, 공유의 용이성 이것들이 장점이며, 우리는 그렇지 않습니다 그들에게서 멀어지고 싶다 그래서 우리는 오픈 소스에서이 라이브러리를 작업했습니다

papermill 그리고 제터 (GterHub) 프로젝트에 nteract라고하는 제지 공장이 있습니다 유틸리티와 도구가 한꺼번에있다 노트북 주변, 특히 Jupyter Notebooks에서 그리고 높은 수준에서이 방법으로 작동합니다

그것은 UI처럼 클라이언트처럼 실행되는 프로그램입니다 그리고 그것은 무언가를 입력으로 받아 들일 것입니다 일부 경로에 노트북, S3, 이 예와 같이 Google Cloud Store에서 로컬 파일 시스템에서 그것은 그 노트를 우선 순위를 매기고 실행할 것입니다, 그런 다음 출력 위치로 출력 할 것입니다 입력과 독립적입니다

그래서이 경우 우리는 아마도 4 개의 다른 런을 가질 것입니다 우리는 같은 노트를 네 번 실행 한 곳에서 뛰어납니다 매번 달리 달리기 그러면 코드에서 어떻게 보이나요? 그래서 실제로는 아주 간단한 인터페이스입니다 당신은 그것으로 정말 복잡해질 필요가 없습니다

여기서는 몇 가지 예를 들어 보겠습니다 Google Cloud 제재소 데모에 맞춰 제재소를 운영합니다 일부 입력 노트북 그리고 우리는 기본적으로 새로운 장소로 출력 할 것입니다 그리고 여기에서는 그대로 노트북을 그대로 달리고 있습니다

우리는 이봐, 우리는이 노트를 달리고 싶다 제재소는 어때? 실제로 전체 노트와 마지막을 실행하고 있습니다 처음부터 마지막 ​​세포까지 그리고 각 셀이 실행될 때 오류가 발생하지 않으면 그것은 다음 셀로 계속됩니다 각 셀이 실행됨에 따라 결과가 저장됩니다

출력 위치로 따라서 점점 더 많은 결과를 얻게됩니다 또한 실제로 일어나는 일을 로그 아웃 할 수 있습니다 약간의 중단이 있더라도 셀 또는 일부 하드웨어의 중간에서 죽습니다 하지만 이걸 실행하면 데모를 실행하고 우리는 데모를 가지고, Google 클라우드에 폴더가 표시됩니다 이 출력 실행은 매일 매일 한 번씩 실행됩니다

날짜를 출력 경로에 넣습니다 이제 실제로 당신은 무엇의 역사를 볼 수 있습니다 너는 매일 매일 뛰었다 입력 내용을 변경하지 않았습니다 사실, 당신의 산출물은 당신의 투입물로부터 분리되어 있습니다

그래서 당신은 좋은 불변의 보증을 얻는다 또한 버전 기록을 얻을 수 있습니다 당신이 일을한다면, 역사적으로 볼 수 있습니다 네가 실제로 실행 한 것 그러나 그것은 우리가 멈추는 곳이 아니기 때문에 아닙니다

우리가 할 수없는 것들은 우리가 갈 수 없다는 것입니다 인간처럼 편집하고 매개 변수 또는 변수를 변경합니다 그런 다음 노트북이 작동 할 것으로 기대하십시오 누군가가 우리에게 노트북을 줄 때, 우리는 실제로 그것을 templatize하는 능력이 필요합니다 추가 매개 변수입니다

이 경우에는 우리가 이 입력 노트를 실행하고 가장 할 것입니다 이것은 가고 어쩌면 중요하게 생각하는 노트입니다 특정 지역의 기기 별 클릭 수 어쩌면 들어 본 적이있는 웹 사이트 일 수도 있습니다 당신이 달리고있는 노트북, 여기에이 기본 매개 변수 셀이 있습니다 네가 어디에서 확인 할까?이게 내 기본이야

지역을 미국으로 설정할 수 있습니다 장치는 PC입니다 그래서 제가 제재소없이이 노트북을 운영한다면, 그것은 달리고, 말할 것이다, 헤이, 나는 가고있다 미국인 PC의 모든 것을 웹 사이트를 클릭했습니다 그러나 그런 다음 우리가 제지 공장에서 이런 식으로 매개 변수화 할 때, 지역 장치를 덮어 썼다는 것을 알게 될 것입니다 다른 코드 셀을 삽입하여 제지 작업 방식은 입력을 생성하는 것입니다

그 입력으로부터 코드 셀을 생성하고, 그것을 노트북에 주입하십시오 마치 사용자 입력이었다고 가정합니다 그리고 나서, 그것이 실행될 때, 당신의 결과는 실제로 코드로 쓰기 만하면됩니다 그래서 당신이 그것을 읽을 때,가는 것입니다 매개 변수를 말하는 주석이있는 셀이된다

그런 다음 시스템에서 주입 한 모든 매개 변수 사용자를 대신하여 또한 파이썬에서 이것을 실행할 필요도 없습니다 실례합니다 명령 줄에서 실제로 실행할 수도 있습니다 아마도 더 일반적인 패턴 일 겁니다

그것을 확장하려고하면, 당신은 파이썬에서 물건을 확장하고 싶습니다 하지만 여기에서는 똑같은 명령을 볼 수 있습니다 이 Google Cloud 노트북 입력 – 출력 경로를 어디에서 했습니까? 커맨드 라인에서도 똑같은 일을 할 수 있습니다 우리는 제재소를 CLI로 말하고 있습니다 그 다른 호출을 래핑합니다

그리고 매개 변수를 전달할 수 있습니다 JSON 형식의 모든 종류 또는 개별 키 값으로 사용할 수 있습니다 기술적으로, -y는 YAML을위한 것이므로 역시 YAML을 줄 수는 있지만 여기서는 JSON을 전달합니다 그럼 이걸 어떻게할까요? 실제로 명령 줄에서 호출하는 것처럼 보입니다 그래서 이런 식으로 될 것입니다

우리가 도망 간 명령을 실행합니다 너는 인쇄물을 볼거야, 이봐, 나는 여기에서 입력 노트를 붙잡고있다 나는 결과물에 갈거야 그러면 진행률 표시 줄이 보입니다 진행 상황이 인쇄되고있다

처리 속도에 따라 다릅니다 이러한 것들 중 어느 것을 구성 할 수 있습니까? 기본적으로 렌더링하고 싶지만 실제로 실행되는 것에 대해 몇 가지 기본 사항을 설명합니다 로그 모드로 설정할 수도 있습니다 각 셀에 대한 모든 로그를 출력합니다 그것을 셀에 저장하는 것뿐입니다

우리가 같은 결과를 도출한다면 Google Cloud에 무엇이 있는지 살펴보고 말하고 싶습니다 우린 방금 도망 쳤어 실제로, 우리가 거기에서 뛰어 내린 코드 정확히 동일합니다 기본적으로 정확히 동일한 코드입니다 그리고 저는이 제지 공장 데모 버켓을 가리키며, 당신은 우리가 결과를 볼 수 있습니다

입력은 분리됩니다 구운 이미지가 없었기 때문에 입력에 993 바이트가 있습니다 그리고 출력은 35 킬로바이트 원래의 노트이기 때문에 이미지를 인쇄하는 것을 보았습니다 그러면 이것이 어떻게 그림을 변화 시키는가? 후드 아래 툴링과의 상호 작용? 이 전체 스택을 대체하는 것처럼? 정말로 실제로는 다른 클라이언트입니다

Jupyter 커널과 대화하기 따라서 API와 동일한 프로토콜 및 사양을 따르고 있습니다 클라이언트 또는 다른 종류의 코드화 된 인터페이스 당신이 만들고 싶어하는 사용자 인터페이스를 만들고 싶습니다 그리고 Jupyter가 어떻게 이러한 좋은 스펙을 가지고 있기 때문에 REPL과 인터페이스간에 통신하려면, 제지 공장은 그러한 고객들처럼 행동하고 실행할 수 있습니다 따라서 실행되면 실제로 실행됩니다

커널 관리자를 시작하십시오 커널을 이름으로 찾아서 시작하고, 모든 코드를 실행하고, 그만해라 그리고 다른 유일한 차이점은 그것은 읽기 및 쓰기 – 우리는 하나의 자료를 읽고 결과에 글을 쓰고 있습니다 소스 또는 결과 목적지 아마도 어쩌면 개발과 조금 다릅니다

사이클 패턴 하지만 하루가 끝나면 항상 ipnyb 파일이 생깁니다 어떤 시스템에서든로드 할 수 있습니다 너가 무엇에 관하여 두건의 밑에 조금 더 깊게 보면 이게 실제로 생겼어

여기에 몇 가지 모듈이 있습니다 동기화와 소스가 있습니다 어떤 종류의 스키마 화 된 목적지가 될 수 있습니다 따라서 Google Cloud, S3, Azure, File과 같은 것들 시스템, [INAUDIBLE] ,, 모두 구운 것입니다 그런 다음 여기에 매개 변수를 입력하십시오

JSON과 같은 모든 종류의 값을 전달할 수 있습니다 그리고 그 연장들 그래서 당신이 더 많은 것을 맞춤화하고 싶다면 플랫폼에 따라 매우 쉽습니다 매개 변수가 전달되는 방식의 확장 그래서 당신은 테이블 참조와 같은 것을 할 수 있습니다 실제로 사용자를 대신하여 테이블 데이터를로드합니다

이것이 가능해진 다른 아이디어는 아이디어입니다 노트북 템플릿을 가지고있을 수도 있습니다 학습 알고리즘인데, 실제로 실행하는 방법을 조정하려고합니다 노트북을 실행하고 매개 변수화 할 수 있습니다 각 달리 달리

그런 다음 그 노트를 실행할 수 있습니다 문서화 된 결과를 시각화, 로그, 각 매개 변수에 대해 결과를 한 곳에서 확인 시작한 템플릿의 유사 콘텐츠 이것은 기계 학습 패턴을 위해 정말 편리합니다 템플릿을 가지고 싶어하기 때문에 조금, 패턴을 찾으십시오 하지만 그때 너는 어쩌면 뭔지 모르겠다 프로덕션 환경에서 실제로 사용해야하는 매개 변수 그래서 이것은 당신이 그 노트를 펼칠 수있는 방법입니다

다양한 매개 변수를 따라 다시 작성하지 않아도됩니다 그리고 최종 결과는 다음과 같습니다 어쩌면 혼란의 결과일까요? 매트릭스 또는 결과에 대한 다른 정확도 점수 그 노트북마다 있습니다 따라서 노트북 실행의 몇 가지 측면이 있습니다 이것까지 확대된다

그 중 일부는 우리가 다른 유형의 사용자에게 실제로 Netflix가 실제로 있었던 곳입니다 이 제지 투자의 일부를 타겟팅합니다 이전에는 데이터 과학자들이 멋진 반복을 가졌습니다 생산에 적합하지 않은 장소 그리고 지금, 우리는 실제로 이것을 확장했습니다, 이제 분석 엔지니어 및 데이터 엔지니어 점점 더 노트북을 사용하고있다

로깅의 이점을 얻을 수 있기 때문입니다 그들은 그들이하는 것을 연관시키는 이점을 얻습니다 결과로 실행 그리고 그들은 반복적으로 발전 할 수 있습니다 그들은 모두 비슷하게 보이는 반복주기를 가지고 있습니다

비록 데이터 과학자에게 이렇게 말하고 싶지만 반복주기 측면에서 가장 많이 관련되어 있습니다 그러나 이제 그들은 노트북을 개발할 수 있습니다 모든 다른 사용자 프로필 제지를 사용하고 플랫폼에서 스케줄을 잡을 수 있습니다 나중에 사람들을 프로그래밍 방식으로 실행하십시오 그래서 이것의 한 예입니다

여기에 슬라이드에 링크 된 블로그 게시물이 있었는데, Google Cloud에서 TensorFlow와 함께 제지를 사용하는 방법 GPU 인스턴스로 노트북을 실제로 실행하는 방법 또는 다른 유형의 구성 여기에 약간의 발췌 문장이 있습니다 슬라이드에 맞추기 위해 조금 짧게 잘라 냈습니다 블로그에는이를 실행하기위한 전체 코드가 있습니다 하지만 기본적으로 Google 클라우드를 실행하려고합니다

인스턴스를 사용하여 인스턴스 작성 호출을 계산하고, 그런 다음 GPU 수와 유형을 전달하게됩니다 그리고 나서, 당신은 또한 말하기를, 헤이, 내 시작 스크립트는이 제지 입력 경로입니다 출력 경로 그리고 어떤 종류의 매개 변수화도 여기에 추가 할 수 있습니다 당신이 원할 것입니다

그런 다음 Google Cloud에 인스턴스 삭제를 요청할 수 있습니다 다 끝났어 그리고 이것은 기본적으로 오케스트레이션을 만들었습니다 다른 하드웨어 세트 위에 노트북을 실행하는 경우, 액세스 할 수없는 하드웨어 포함 당신의 로컬 개발자 다른 하나는이 모든 오픈 소스 코드입니다

내가 보여주고있는 모든 것들이 독점적 인 것이 아니며, 벽 뒤에 숨어있다 Google Cloud 스토리지는 실제로 오픈 소스에 합병되어 누구에게나 쉽습니다 Google Cloud에서 도구를 사용하여 액세스 할 수 있습니다 S3와 Azure도 비슷한 이야기입니다 다른 어떤 계획에도 쉽게 접근 할 수 있습니다

우리는 추가하고 싶다 우리는 그들이 어떻게 그 일을하는지 잠시 후에 이야기 할 것입니다 그리고 전체 제지 공장은 그건 그렇고 10 릴리스가 실제로 나갔습니다 오늘, 기능 완전성이었다 상류의 모든 작은 것들이 마침내 얻었습니다

완료되고 릴리스로 병합됩니다 이제는 정말 멋지고 깨끗한 레포입니다 그러나 모든 것은 플러그 앤 플레이입니다 그래서 당신이 싱크와 소스로부터 어떻게 읽었는지, 실제로 노트북을 어떻게 실행하는지, 매개 변수를 적용하는 방법은 모두 자신 만의 커스텀을 등록 할 수있는 등록 된 클래스 의 버전 예를 들어 SFTP 처리기를 구현하려고합니다 SFTP에 파일이 몇 개 있다고 가정 해 보겠습니다

누군가 노트북을 가지고있는 곳에, 또는 그들이 노트북을 거기에 착륙시키기를 원한다 일부 B2B에서 공유해야하기 때문에 여전히 SFTP를 사용하고 있습니다 이를 구현하기 위해서는 말 그대로 여기에 모든 코드가 있어야합니다 읽기 및 쓰기를 구현 한 경우 그런 다음 여기에 설치 도구를 설치했습니다 이것은 호출 할 수있는 모든 코드가 될 것입니다

하단에있는 명령은 제지기입니다 SFTP 체계로 실행하십시오 그것은 당신이 할 수있는이 진입 점 패턴을 가지고 있습니다 자신의 설정에서 등록 할 수있는 파이 IO를 등록하는 방법에 대한 진입 점 다른 인터페이스와의 인터페이스 비슷한 패턴의 따라서 코드는 실제로 사물을 실행합니다 전체 레포를 읽으면 지금은 정말 짧습니다 거기에 코드가별로 없습니다

그것이하는 일을 쉽게 알아볼 수 있습니다 새로운 것을 추가하는 것입니다 그래서 내가 얘기하고 싶은 한가지 사실은 실패 모드는 실제로 정말 노트북에 좋았어 전통적으로, 당신이 생각한다면, 어떻게 어쩌면 제가별로 좋지 않은 대본을 가지고 있을까요? 생산하고 도서관에 넣고, 아니면 세 가지 다른 시스템에 걸쳐 사물을 호출하는 것일 수도 있습니다 실패 할 때 실제로 무엇이 잘못되었는지 어떻게 이해할 수 있습니까? 그리고 이것은 나와 같은 사람들을 고용인으로 고용하는 것입니다

어려운 문제이기 때문에 사람들을위한 솔루션을 구축하십시오 그러나 멋진 것들 중 하나는 노트가있는 것입니다 노트북으로 실패하고 우리가 좋아하는 것과 동일한 패턴을 부른다 일부 매개 변수를 통해 실패한 노트북 실제로 무슨 일이 일어 났는지에 대한 정말 풍부한 정보를 가지고 있습니다 어떻게 잘못 됐어? 어떻게 문제를 재현 할 수 있습니까? 당신은 그 노트에 담긴 모든 것을 얻습니다

실패했기 때문에 실제로 저장됩니다 결과,하지만 그것을 구할거야 다음은 스택 추적입니다 실패한 세포는 다음과 같습니다 코드가 성공하지 못한 이유는 다음과 같습니다

그리고 당신의 매개 변수는 제지 공장을 운영 할 때, 이미 그 노트에 구워졌고, 따라서 다시 매개 변수화 할 필요가 없습니다 그것은 당신이 예정되어있을 때 달렸던 것과 똑같이 달릴 것입니다 또는 플랫폼 내부에서 실행 중일 수 있습니다 여기 예를 들어, 우리는이 노트를 가지고 있습니다 이것들은 제가 방금 얻은 장점 중 일부입니다

스택 추적 및 재실행 및 실행에 대해 이야기했습니다 로그 그러나 우리가 방금 가지고 있었던 노트, 우리는 실패하고 추락했습니다 글쎄, 우리가 할 수있는 일은 갈거야 노트북에서 문제를 찾으십시오

여기 셀 실행 번호 12 번을 찾았어요 나는 중간 층을 잘라 냈다 Spark과 이야기하는 일종의 HTTP 연결 실패가 있습니다 우리는 노트북을 dev에 넣을 수 있습니다 우리가 문제를 해결할 때까지 반복한다

실제로 잘못된 점을 확인하십시오 그리고 나서 그 고침을 다시 보낼 수 있습니다 업스트림 업 노트북으로 이 경우 예를 들어 Spark 작업이 존재하지 않는 호스트 이름으로 기본값 설정됩니다 그래서 그것은 어떤 원숭이를 목표로하고 있습니다

존재하지 않는 클러스터 그래서 우리는 YARN 클러스터가 실제로 어디에 있는지 알려줄 필요가 있습니다 입니다 그리고 이제 그 일이 실제로 성공합니다 그 변화를 밀어 낼 수 있습니다

그러나 우리는 정확한 문제를 재현합니다 우리는 가서 5 가지 시스템에 무엇이 잘못되었는지 물어볼 필요가 없었습니다 그래서 당신이 어떻게 노트북을 실행하는지에 대한이 아주 간단한 변화는 무엇입니까? 입력과 출력을 격리하는 클라이언트가 제공합니다 당신은 당신이 불변 인 입력을 얻는다는 것입니다 예약 한 입력 내용 변경하기 또는 프로그램 방식으로 실행됩니다

만약 당신이 불변의 결과를 얻으면 출력을 고유 한 경로로 저장하고, 예를 들어, 우리는 사용자의 실행이 무엇이든간에 컨텍스트와 모든 단일 실행에 대한 GUID, 그런 다음 우리는 그것을 다시 연관시킵니다 그리고 우리는 그것을 어딘가에 넣습니다 그것은 읽기 전용이므로 사용자는 편집 할 수있는 권한이 없습니다 즉 재현성이 아주 좋다는 뜻입니다 실제로 실행 된 내용에 대한 감사 내역을 제공합니다

또한 좋은 매개 변수화 노트북을 실행할 수 있습니다 더 이상 당신은 큰 명령 블록을 가지고 있지 않아도됩니다 인간이 갈 노트북을 갈, 이걸 실행할 때,이 세 줄을이 셀에서 바꾸고, 이 셀에서이 네 줄을 바꾸십시오 당신은 더 이상 그렇게하지 않습니다 그냥 매개 변수화하고 템플릿으로 만들 수 있습니다

그래서 사용자는 매개 변수를 전달할 수 있습니다 그리고 다른 하나는 구성입니다 소싱 및 동기화 즉, 인터페이스를 바로 사용할 수 있습니다 이미 파일을 공유하고있는 플랫폼에 또는 이미 호스트 된 시스템이있는 곳 실행을 다시 쓸 필요없이 자신의 복사본으로 감싸고 이동하고 이동하십시오 그래서 모든 것을 감안할 때, 그것은 또한 꽤 설득력있는 논쟁을 불러 일으 킵니다

노트북을 더 잘 테스트 할 수 있기 때문에 이전과는 반대로 제재소에서, 시험은 보통 누군가에게 그것을 발송했다 그리고 그들이 그것을 실행하게하고 말하기를, 네, 이것은 훌륭합니다, 그들이 옳았기를 바란다 그래서 노트북의 관점에서, 한 가지 노트를 테스트 할 때주의 할 점 노트북이 아주 끔찍한 도서관을 만드는 것입니다 그들은 훌륭한 통합 도구를 만듭니다 하지만 거기에 엄청난 양의 라이브러리 코드가 있다면, 그들은 믿을만하고 당신을 알기가 꽤 어렵습니다

공유하고 재사용 할 수 있습니다 그게 무슨 뜻인지 얘기하겠습니다 그래서 그들은 좋은 통합 도구를 만든다 노트북이 연결에 정말 능숙하기 때문에 기술의 다른 조각, 실제로 어떻게 달렸는지, 결과를 작성하거나 몇 가지 조치를 취하십시오 서로 다른 기술에 생태계를 떠나지 않아도됩니다

그러나 그들은 정말로 복잡 할 때 신뢰할 수 없습니다 또는 그것들은 정말로 높은 브랜칭 요소를 가지고 있습니다 그래서 15 개의 조건문이있는 노트가있을 때 그것 또는 많은 다른 기능 및 반복의, 그것에 대해 추론하기가 정말로 어려울 수 있습니다 이 일이 벌어지면 코드가있는 전통적인 경로 영역 당신은 그 조각들 각각에 대해 단위 테스트를 할 것입니까? 그들을 깨뜨려 라

노트북의 경우 단위 테스트가 약간 어렵 기 때문에, 우리는 실제로 적어도 Netflix에서, 이 개발 지침 중 일부를 채택했습니다 더 중요한 일을 위해서 이것은 낮은 분기 인자를 유지합니다 짧고 단순합니다 하나의 주요 성과를 유지하십시오

그래서 다섯 가지 일을하는 노트를 가지고 있다면, 어쩌면 그것을 5 개의 수첩으로 나누는 것을 고려해보십시오 하나는 스스로 할 일을하는 5 개의 노트를 가지고 있습니다 그리고 이걸 괄호 안에 넣었습니다 우리가 그것에서 너무 실패하기 때문에 – 도서관 기능을 떠나라 도서관에서

그래서 정말로 복잡한 노트를 얻는다면 중요합니다 제작을 옮기고 그 코드를 옮기고 싶다 노트북 전체에서 공유되는 라이브러리로 너와 얘기 해봐 누구든지 돕는 사람이야 당신이 어떻게 해야할지 모르는 경우에 그렇게하도록 지원하십시오

그러나 우리는 여전히 무언가의 이점을 얻습니다 우리는 전에 통합 테스트를 할 수 없었습니다 따라서 통합 테스트를 작성하려는 경우, 당신은 기본적으로 사용자가 원하는 것을 정확하게 써야합니다 노트북에 템플릿 호출을 실행했습니다 Spark 템플릿이 있다고 가정 해 보겠습니다

우리는 이전에 실패한 것으로 나타났다 우리는 통합 테스트를 작성하려고합니다 사용자가 실패했기 때문에 실패했습니다 찾을 수있는 클러스터 호스트가 있습니다 그리고 우리는 쉽게 그것을 잡을 수있었습니다

기본값이 실패 할 것이라는 것을 여기서 우리가 할 수있는 것은 동일한 Spark 템플릿을 실행하는 것입니다 그리고 나서 우리는 약간의 테스트 실행 출력을 할 것입니다 어쩌면 우리는 이것을 자동화하고 거기에서 시운전 아이디어를 얻을 것입니다 그리고 나서 우리가 할 일은 가짜 영역, 가짜 실행 날짜 및 디버그 플래그 전달 그냥 어쩌면 말릴 수있는 노트북 용 디버그 모드에 있으면 실행을 실행합니다 이 경우 Google은이 지역을 타겟팅 할 것입니다 루나 (luna)라는 사용자 톤이 있습니다 실행 날짜를 고를 것입니다

어쩌면 그다지 중요하지 않습니다 하드 코딩 된 날짜로 수정하겠습니다 모든 사람들이 깨어 났습니까? 나는 방금 말했어, 좋아, 냉정하게, 달에서 사람들을 찾는 것 아무도 그래요 좋아요

그래서 우리는 – 여기에 전달 된 매개 변수가 있습니다 지역이 할당 된 것을 볼 수 있습니다 실행 날짜가 지정되고 디버그가 true입니다 그리고 나서, 여기, 우리가 실제로 실행하고있는 Spark SQL이, 어쩌면 출력 테이블에 대해 특정 쿼리를 실행 중일 수 있습니다 이제 매개 변수를 사용하여이 매개 변수가 어떻게 실행되는지 재검토 할 수 있습니다

더미 데이터에 대해 실행하십시오 그래서 우리는 우리가 할 일을 많이 할 것입니다 Netflix에서 통합 테스트를 실행합니다 우리는 모든 템플릿을 실행할 것입니다 그리고 우리는 기본 테이블을 가지고 있습니다

알려진 잠재적으로 문제가되는 패턴 또는 단순한 우리가 할 수있는 일 그런 다음 동일한 템플릿을 실행합니다 사용자는 동일한 방식으로 사용하려고합니다 해당 테이블 또는 해당 코드를 대상으로 사용합니다 그리고 이것은 당신에게 정말 좋은 방법을 제공합니다

말하자면, 이봐,이 노트북은 잘 돌아 간다 나는 모든 디폴트가 의미가 있다는 것을 안다 나는 그것을 어떤 식 으로든 매개 변수화 할 수 있다는 것을 알고 있습니다 또한 DAG 실행이있는 경우, 당신은 통합 테스트를 실행하는 것과 같은 일을 할 수 있습니다 DAG에 후속 부서가있어 이봐, 네가 걱정된다면 이걸 실제로 쓰는거야? 그것에 대해, 그리고 당신이 갈 수 있습니다

그것은 통합의 조타실로 바로 들어갑니다 방법으로 뛰어 들었다면 테스트해라 QA는 테스트에 대해 생각합니다 적용 범위가 다양합니다 그 공간에있는 노트북 용

그래서 그 방법에 대한 지침은 무엇입니까? 내 수첩을 시험해? 노트북을 단위 테스트하는 것은 어렵습니다 거기 밖으로 공구는 중대하지 않다 또는 툴링이 좋더라도 조금 성가시다 너 한테 어떻게 할 수 있니? 번들로 누군가에게 보내십시오 하지만 이제 단위 테스트와 함께 어떻게 묶어 줍니까? 그것들을 당신의 노트에 넣고 정말로 어수선하게 만드나요? 너는 그걸 옆에 두니? 그렇다면 어쨌든 도서관을 만들면 어떨까요? 거기에 몇 가지 어려운 대화가 있습니다

그래서 실제로 우리가 한 일은 결국 말했습니다 안녕하세요 좋은 앱에서 노트북을 사용하세요 통합 또는 재현성, 이 가이드 라인을 따라 확실하게 당신은 그들이 일할 것이라고 믿을 수 있습니다 당신이 간단한 한 페이저의 노트를 가지고 있다면, 하나의 통합 테스트만으로도 충분할 것입니다

너는 괜찮아 질거다 어쩌면 약간의 복잡성을 가진 무언가가 있다면, 어쩌면 그것은 화면에 두 페이지의 코드 일 것입니다 어쩌면 몇 가지에 대한 몇 가지 통합 테스트 그것을 만들기 위해 갈 수있는 패턴들 당신은 보통 당신을 꽤 잘 감싸는 선들의 더 많은 부분을 커버해야합니다 그리고 프로덕션 유스 케이스에 꽤 유용 할 것입니다 당신이 정말로 복잡한 노트를 작성한다면 – 나는 ML 전체 훈련, 적재, 저축, 동일한 3 가지 모델 반복 20 페이지 분량의 문서와 같습니다

하나, 어쩌면 찌르지 말라 중요한 코드 인 경우 해당 코드 중 일부를 라이브러리로 옮기십시오 모델 실행 사이의 공유 코드 모든 노트에로드 할 수 있습니다 그리고 나서 당신의 노트가 멋지게 정리됩니다 라이브러리가있는 통합 기능이 더 많습니다

통합 조각 중 하나 그리고 나서, 당신이 그것을 할 수 없다면, 당신은 여전히 하나의 통합을 얻으려고 노력해야한다 적어도 이것이 어떻게 사용되는지에 대한 사용 패턴 당 테스트 당신에게 확신을줍니다 그것은은 총알이 아니지만 그것은 당신을 더 멀리합니다 그리고 내가 정말로 강조하고 싶은 한가지 내가 제재소에 대해 많이 얘기 했어

이 도구를 사용하여 노트북을 변경하는 방법에 대해 설명합니다 실제로 생태계에는 다른 여러 가지 장점이 있습니다 모든 사양과 프로토콜을 기반으로하기 때문에, 실제로 노트북은 풍부한 환경을 갖추고 있습니다 다양한 기능을 제공하는 라이브러리 그리고 종종 오늘날의 세계에서, 많은 노트북 팀이 형성되고있다 이 맛있는 것들을 수집하는 방법에 관한 것입니다

사용 사례에 적합한 플랫폼에 넣으십시오 아마 들어 보지 못한 도구가 많이 있습니다 플랫폼 팀에 의해 사용됩니다 내가 조사하는 것이 좋습니다 nbconvert는 실제로 제지 공장에서 사용하는 것으로, 그러나 다른 수출 형태를 가질 수 있습니다

따라서 노트북의 HTML 또는 PDF 결과물을 만들 수 있습니다 통근자는 읽기 전용 인터페이스입니다 아마도이 목록에서 가장 유용 할 것입니다 훨씬 더 안전하고 쉽게 공유 할 수 있기 때문입니다 당신은 전체 노트북 서버를 가질 필요가 없습니다

집행 결과를 공유하다 또는 당신이 무언가를 어떻게 계획하고 있는지 그리고 여기에 몇 가지 다른 것들이 있습니다 나는 몇 분 동안 이야기 할 것이다 그래서 스크랩북이 그 중 하나입니다 스크랩북은 또 다른 리포입니다

기본적으로 뽑은 처음부터 쓰여졌습니다 원래 제지 공장에 있던 일부 기능 구현하고 자체 버켓에 넣습니다 그리고 이것이 실제로하려고하는 것은 도구로서, 스크랩북은 이야기를 완성하기위한 것입니다 함수로서의 노트북의 호 이제 제지 공장에서 입력 노트가 생겼습니다

당신은 제지를 가지고 있습니다 그래서 당신은 실제로 달릴 기능이 있습니다 당신은 입력으로 매개 변수를 가지고 있습니다 그러나 당신의 결과는 여전히 노트북입니다 그래서 당신이 노트를 낼 때, 그것은 여전히 대부분 인간이 해석 할 수 있고 해석 할 수있는 기계가 아닙니다

이것이 추가하는 것 중 하나는 능력입니다 노트에 결과를 저장하고 리콜하십시오 그리고이게 정말 유용할까요? 그 ML 모델이었던 그 노트를 돌렸다 모든 매개 변수를 반복하고 싶습니다 내가 구할 수있는 것들 중 하나 혼란 행렬 결과입니다

그리고 나는 그 모든 복잡한 매트릭스를 수집하려고합니다 가장 좋은 매개 변수화를 찾으십시오 또는 몇 가지 기준에 부합해야합니다 이렇게하면 떠나지 않고 쉽게 할 수 있습니다 노트북

GitHub을 살펴 보시기 바랍니다 어떻게 작동하는지에 대한 자세한 내용을 살펴보십시오 하지만이 예에서는 노트북 내부에 첫 번째 섹션에서는 스크랩북을 가져 오는 중입니다 우리 모델 결과를 붙이기 그리고 나서, 나중에 노트북 밖에서, 어쩌면 우리가 그것을 실행했거나 다른 노트북에서, 우리는 그 결과 노트를 읽을 것입니다

그런 다음 키로 모델 결과를 수집하십시오 그리고 그래프와 같은 것을 저장하고 리콜 할 수도 있습니다 정말 편리한 기능 중 하나입니다 실적 그래프가있는 경우 실제로는 성능 그래프를 혼동 행렬 결과와 함께 저장하십시오 그리고 나서, 혼란 행렬을 발견하면 대부분의 경우와 마찬가지로 실제로 그래프를 렌더링 할 수 있습니다

실행하고 다시 실행할 필요가 없습니다 그것은 아주 작은 도구입니다 보세요 그것이 일찍 갈 수있는 곳에서 조금 더 일찍, 하지만 모든 기능을 가지고 있습니다 나는 방금 설명했다

그리고 저는 통근에 관해서 조금 이야기했습니다 정말이 것을 조사하는 것이 좋습니다 이것은 통근자를위한 인터페이스입니다 이것은 Presto 작업을 실행하는 방법에 대한 Presto 템플릿입니다 또한 한 페이지에 맞습니다

좋고 깨끗합니다 거의 아무 일도 일어나지 않고 있습니다 하지만이 전화가 여기에 있기 때문에 정말 편리합니다 우리는 입력을 스키마화 한 다음 여기에 시선이 있습니다 그 다음 작업 정보를 출력합니다

끝에있는 모니터 여기서는이 노트북 템플릿을 사용자와 공유 할 수 있습니다 실제로 실행하면 이것에 대한 로그를 가지고 파라미터 화되어 있습니다 그리고 우리는 항상 통근자를 통해 사용자와 공유합니다 그래서 그들은 보는 좋은 방법을 가지고 있습니다

아무것도 편집 할 위험없이 일어난 일 그래서 저는 오픈 소스에 대해 많이 이야기했습니다 우리가 그것을 많이 사용하는 방법을 암시했다 Netflix의 약 1 년 반 동안의 일 중 하나 전에 우리가 정말로 다이빙을 시작했을 때 이 모험에 전략적 내기가있었습니다 많은 사용자들이 우리는 우리가 가장 많이 고용했음을 알았습니다

분석가들은 실제로 다른 도구 대신 노트북 사용 우리가 노트북을 더 쉽게 만들기에 기대고있다 회사에 도움이 될 것입니다 그리고 나서 우리는 그것을 조금 더 가져갔습니다 우리가 새로운 스케줄러를 수행하는 곳에서 거의 미친 수준으로 계획 우리는 모든 스케줄 된 일자리를 극도로 들릴지도 모르는 노트북, 그러나 실제로, 그것은 아주 잘 뛰었습니다

우리가 실제로 한 일은 템플릿을 만들었 기 때문입니다 그리고 사용자는 노트북을 사용하고 있다는 것을 몰랐습니다 처음에 그들은 내가 스파크 일을하고 있다고 말한다 나는 사제로가는 수송선을 달리고있다

그들은 단지 입력과 매개 변수를 제공하고 있습니다 다른 직업과 마찬가지로 스키마 화 된 직업 유형 정의 그러나 오늘의 끝, 우리는 항상 그것을 노트북으로 번역하십시오 따라서 누군가 일어난 일을 쉽게 디버그 할 수 있습니다 나는 이것을 강조 할 것이다

우리는 오랫동안 코드를 작성하지 않은 팀의 관리자가있었습니다 시간, 그리고 전화를받은 사람 – 이것은 기계 학습 팀입니다 그의 전화는 아팠고, 그들의 중요한 일 중 하나였습니다 실패한 그리고 그는 나중에 나에게 말했다

나는 그가 이것을 한 것을조차 몰랐다 – 그러나 그는 말했다, 오오 그렇습니다, 그가 아팠기 때문에 페이징 받았어 그리고 나는 가서 그 일을 보았다 그리고 그것은이 노트북 일을 가지고있었습니다 나는 그것이 무엇인지 모른다 나는 그것을 클릭했다

그리고 그것은이 정말로 시각적 인 것을 가지고 있었다 그런 다음 스택 추적 오류가 무엇인지 정확히 알려주었습니다 그리고 나는 그것을 읽었고, 무엇이 잘못되었는지를 이해했습니다 실제로 그것을 수정 한 다음 작업을 재개하면 효과가있었습니다 팀의 매니저가 그렇게 할 수있었습니다

장벽을 상당히 낮 춥니 다 실제로 일어난 일과 잘못 된 일을 이해하는 것 그래서 재미있는 일입니다 그리고 그 이후 우리는이 프로젝트를 시작 했으므로, 우리는 10,000 명 이상의 일자리를 옮겼습니다 그것은 150,000 개의 쿼리 순서로 생산되었습니다

모든 것이이 노트북 프레임 워크에서 실행됩니다 그리고 우리는 꽤 좋은 성공을 거뒀습니다 그것을 뒷받침 할 수 있습니다 시원한 그것이 저의 프리젠 테이션을위한 것입니다

그리고 나서 우리는 질문을 할 시간이 있다고 생각합니다 하지만 그래 [박수 갈채] 관객 : 그 공연에 대해 묻고 싶습니다 성과의 잠재적 영향 명확한 파이썬 [INAUDIBLE]을 실행하는 것에 비해 ?? 어떤 차이가 있습니까? MATTHEW SEAL : 네 그래서 질문은 차이가 있습니까? 순수 Python 실행과 Python 노트북 실행 사이에? 관객 : 맞습니다

MATTHEW SEAL : 대답은 거의 없습니다 현실에서는 이것이 전부입니다 – 당신이 가지고있는 유일한 것은 약간의 시작 시간입니다 커널을 시작하기 위해 두 번째 또는 두 번째입니다 그리고 나서, 파이썬 코드를 실행하고 있습니다 파이썬 코드를 정상적으로 실행하는 것과 같은 방식으로 IPython을 사용한다

따라서 실제 성능에 미치는 영향은 없습니다 네? AUDIENCE : 커널에 내장 된 컴파일러가 있습니까? 또는 통역사를 사용하고 있습니까? MATTHEW SEAL : 커널 제작 책임 코드를 실행할 수 있는지 확인하십시오 그래서 대부분의 경우 – 파이썬의 경우와 마찬가지로, 그것은 IPython을 감싸고 있습니다, 그래서 그것은 프로세스를 시작합니다 – 관객 : 그것은 내장되어 있습니다 MATTHEW SEAL : 그것은 내장되어 있습니다 관객 : 그렇다면 당신이 서버의 버전과 호환되며, 당신은 다른 것을해야합니다

MATTHEW SEAL : 네 종종 버전의 것들, 파이썬이나 스칼라 또는 일부 다른 것 – 또는 R을 사용하고 있다면 – 그들은 버전으로 커널을 명명 할 것입니다 그래서 나는 IPython 버전 37 커널이라고 말할 것입니다 그래서 파이썬 3

7을 사용하고 있다는 것을 알 수 있습니다 그것이 당신이 처형하는 표준입니다 당신이 말하는 것처럼, 헤이, 실행 이 직업은 파이썬 37이다 스칼라와 다른 사람들, 스파크와 같은 방법

그들은 종종 버전을 넣을거야 커널의 메타 데이터에서 매우 명확하다 당신이 처형하고있는 것 커널을 선택하는 방법은 실제로 노트북 내부에 있으며, 실행하거나 커널에 연결할 때 저장됩니다 노트북의 메타 데이터를 저장하고 커널을 실행했습니다

실행될 때, 그것은 정확히 그 커널을 찾고, 그런 다음 대체 메커니즘을 사용할 수없는 경우 당신이 원한다면 최선의 노력을 시도하십시오 관객 : 그러기 전에 – MATTHEN SEAL : 오, 미안 너, 그리고 너 관객 : 노트북이 넷플릭스에 오기 전에 그래서 다른 대안은 무엇입니까? 똑같은 짓을 한거니? MATTHEW SEAL : 네

그렇다면 무엇을 할 수있는 대안인가? 지금 우리는 노트북으로하고있는 중입니까? 글쎄, 우리는 정말 오래된 스케쥴러를 가지고있다 디버깅하는 것이 정말 고통 스러웠습니다 그것을 할 수있는 두 명의 남자가 있었다 그 밖의 모든 사람들은 같았습니다 이것은 잘못되었습니다

그 두 남자는 정말로 바쁘다 그래서 스케줄링 측면에서 이야기 우리가 가진 것에는 비할 바가 못되었습니다 우리는 다른 방식으로 그것을 해결할 수있었습니다 반복주기 및 이동하는 것들 노트북으로 사물의 찌그러진 부분, 이야기 오늘 많은 장소 인 이야기였습니다 네가 뭔가 쓸 때마다 당신이 일을 끝내고 나면 그 다른 곳으로 다시 쓰라는 말을 들었습니다

그리고 때때로 당신은 그 일을 훌륭하게 해냈습니다 때로는 데이터 엔지니어링 팀의 벽에 던져 버렸습니다 그리고 때때로 그들은 그것을했고 때로는 그것을 뒤로 던졌습니다 너에게 그래서 많은 마찰이있었습니다

그리고 그것은 괜찮 았고 특정 규모에서, 그러나 우리는 분명히 경고 신호를보고있었습니다 이 것을 사용하는 사용자 기반 다른 모든 사용자 기반보다 빠르게 성장하고 있습니다 따라서 기술에서 벗어나기보다는 그들은 좋아하고 사용한다, 우리는 움직이기를 원했다 마찰이 적어 지도록 플랫폼을 더 가까이에 두십시오 거기 뒷쪽에

죄송합니다 그는 두 번 손을 올렸습니다 청중 : 계산 방법에 한계가 있습니까? 커널에? 그럼 당신은 [INAUDIBLE] 배포 할 수 있습니까 ?? MATTHEW SEAL : 네 그래서 문제는 계산에 한계가 있는지입니다 커널 내에서? 다른 실행 프로세스와 동일한 제한이 있습니다

따라서 자주 일정을 잡거나 실행하면 실행 중입니다 플랫폼상의 우리 대개 일부 컨테이너에서 실행 중입니다 리소스 제한이 있으며 그 제한이 있습니다 다른 프로세스와 동일합니다

네? 관객 : 당신이 여러 번 달릴 때 – Jupyter를 여러 번 복사하고 저장하면 dif를 실행합니까? 변경하는 [INAUDIBLE]의 어느 부분 에나 저장하십시오 아니면 모든 것을 구합니까? MATTHEW SEAL : 아니오, 모든 것을 저장합니다 그것은 완전히 결과물입니다 그것이 실행될 때 IP MIB를 실제로 읽는 것입니다 그것은 JSON 스키마입니다

그래서 IP MIB 파일을로드하고 검증합니다 버전 44의 스키마와 일치합니다 그런 다음 메모리에 업데이트하여 업데이트합니다 그리고 구원을 얻을 때마다 메모리 표현에서 완전히 독립적 인 출력 입력의

그래서 실제로 그것을 버릴 것입니다 관객 : 내가 [INAUDIBLE] 내 노트의 5 %를 좋아해요 [INAUDIBLE] 무언가를 실험 해보고, 그러나 남은 것을 저장할 수도 있습니다 [INAUDIBLE]의 95 % MATTHEN SEAL : 오늘, 당신이 구할 때마다, 당신은 전체 노트북을 절약 할 수 있습니다 아마 그렇게 될 것입니다

일부 옵션으로 노트북 5 형식으로 변경 그 의미에서 조금 더 확장 가능하기 때문입니다 보통, 정말로 저장하지 않으면 문제가되지 않습니다 정말 큰 디스플레이 기가 바이트의 데이터를 저장하는 것처럼 나빠질 것입니다 당신이 인쇄하고 기가 바이트라고 말한 것처럼, 당신은 정말로 나쁜 시간을 보낼 것입니다

물론, 대부분의 인터페이스에서 나쁜 시간을 보게 될 것입니다 하지만 그 의미에서 노트북에서는 좀 더 나 빠졌습니다 하지만 네, 구원받을 때마다 전체 문서를 저장합니다 저쪽에있는 질문 관객 : 파이썬 파일을 사용한다면, 좋은 품질을 만드는 데 도움이되는 모든 도구가 있습니다

코드 [INAUDIBLE]처럼 당신은 노트북에서 무엇을 사용할 것입니까? 사람들이 좋은 품질의 코드를 작성하도록 어떻게 독려합니까? MATTHEW SEAL : 네 나는 당신이 그 도구들 중 몇 가지를 가져올 것을 권합니다 노트북에 몇 가지가 있습니다

Linting과 같이 UI에는 많은 것들이 내장되어 있습니다 특정 언어를 중심으로 비록 그것이 다국어 시스템이기 때문에, 그 많은 언어에는 멋진 자동 완성이 부족합니다 좋은 linters, 그런 것들 그래서 스칼라와 같은 것으로 넘어 가면, 그것은 여전히 ​​거친 것입니다 그게 더 좋게 만들어지고있어

회사가 투자하고 있습니다 하지만 R 스튜디오는 Jupyter의 R보다 여전히 뛰어납니다 그런 의미에서 나는 그러한 도구들이 통합 될 수 있다고 말하고 싶다 Jupyter에 도구를 가져 오는 것이 좋습니다

이미 존재하는 곳이 몇 군데 있습니다 우리 한 무리있어 나는 네가 다음이라고 생각한다 관객 : 그래서 사건을 처리 할 수 ​​있습니다 실제로 커널은 실패합니다

예를 들어, 코드를 사용하면 커널에 메모리가 부족해집니다 내가 마지막 실행을 저장할 수 있어요 [INAUDIBLE]에서 빠져 나왔어? MATTHEW SEAL : 네 그래서 그는 말하고 있습니다 문제는 일이 잘못 될 때, 커널이 메모리 부족으로 실행되는 것처럼, 아니면 잘 처리되고 있는가? 음, 좋은 점은 제지 1

0을 출시 한 데 있습니다 이제는 더 나은 OM 핸들러가 있습니다 그래서 그것은 실제로 그것이 다 떨어 졌다는 것을 제기 할 것입니다 영원히 달리기 대신에 기억의, 때로는하곤했던 것이 가장 나쁜 일입니다 나쁜 일에서

그러나 이야기의 관점에서, 당신이 실제로 실행하면 최종 실행을 저장하지 않습니다 노트북을로드하면 볼 수 있습니다 그것은 papermill, dot, dot, dot으로 실행됩니다 그리고 그 모드에서 붙어있을 것입니다 프로세스가 종료되고 복구 방법을 알 수 없기 때문입니다

하지만 당신이 얻는 것은 제지 공장을 운영 할 때입니다 – 우리는 그것을 생산으로 운영합니다 대쉬 대시 로그 출력으로 실행합니다 그리고 그 말은 우리가 메시지를 얻을 때마다, 우리는 노트북에 저장하기 위해 완충하고 있었다 우리는 바로 그곳에 그것을 기록 할 것입니다 적어도 컨테이너는 제지실을 운영하고 있던 회사는 모든 통나무를 가지고 있습니다 정말로 파국적 인 일이 생기면 우리는 항상 노트북의 셀이 있더라도 로그를 읽으십시오 실패한

좋은 일이 하나 있는데, 나는 아마 우리가 투자해야한다고 생각해 그 이상, 적어도 우리의 플랫폼에서, 그것이 링크를 만드는 것을 기억하지 못할 때입니다 그 노트를 다시 쓰는 걸 좋아해 로그에 링크를 다시 추가하거나 나중에 로그를 주입 할 수 있습니다 그것은 오늘 그것을하지는 않지만, 추가하는 것은 꽤 쉬울 것입니다

시원한 관객 : 버전 관리에 저장하거나 호스팅합니까? 그런데 어떻게 다릅니 까? MATTHEW SEAL : 네 그래서 질문은, 버전 관리에 저장합니까, 어떻게 다른가? 대답은 버전 관리에 물건을 저장하는 것입니다 다른 모든 사람들이 그러지는 않습니다 나는 diffing이 괴롭다 고 말할 것입니다

사실 더 좋아지고 있습니다 거기에 몇 가지 도구가 있습니다 따라서 nbdime은 주피터에서 노트북을 비교하기위한 도구입니다 Git과 도처에 통합되어 있지는 않지만, 하지만 거기에는 몇 가지 노력이 있습니다 nbviewer는 멋지다

그것은 오픈 소스 측과 가까운 소스 측을 가지고 있습니다 GitHub보기를하고 있습니다 GitHub을 사용하지 않는다면, 그들은 다른 Git 시스템에 대한 문제점을 가지고 있습니다 플러스 온 가드가 그들을 찌르며 스태시에게 전한다 또는 Bitbucket이 API를 추가해야 함을 의미합니다

그래서 당신은 옳은 일을 할 수 있습니다 지역적 차이에 관해서 – 그래서 내가 이것을 묻는 이유, 노트북 담그기 JSON 문서를 비교하기 때문에 정말 못 생깁니다 그들은 꽤 인쇄되어 있습니다, 적어도, 그래서 모든 것이 한 줄은 아닙니다 그러나 당신이 그것을 인간으로서 읽길 원할 때, 당신은 보통 조금 후에 포기합니다 그래서 nbdime과 다른 곳에서의 노력 당신의 장소에 통합하기 코드 검토를 수행하고 노트북을 렌더링하는 곳 dif, 양면 dif, 오히려 JSON raw를 읽는 것보다

오늘 저는 때때로 JSON을 원시로 읽었습니다 그리고 그것은 불행한 일입니다 후속 질문이 있습니다 관객 : 예 그래서 당신은 GitHub [INAUDIBLE]에 저장했다고 언급했습니다

MATTHEW SEAL : 네 관객 : [INAUDIBLE] 회사는 그렇지 않습니다 그 이유는 무엇입니까? MATTHEW SEAL : 그 중 일부는 분석가이며 심지어 일부 데이터 과학자들 – 젠장, 새로운거야 아마 그들은 SQL을 배웠을 것입니다 그들은보고를 할 수 있습니다

그들은 Tableau를 압니다 그들은 이러한 인터페이스 중 일부를 알고 있습니다 그리고 힘내 신종이야, 그래서 들어갈 무서운거야 또한 때때로 사람들은 단지 인간은 인간이기 때문에 게으르다 그래서 네, 항상 Git과 버전 관리를 사용해야합니다

현실은 때로는 사람들이 그 단계를 건너 뜁니다 그것이 너무 중요하다고 생각하지 마십시오 그런 다음 나중에 중요성이 커집니다 그들은 그것을 잊어 버렸다 우리가 여기서하려고하는 것은 – 내가 언급 한 도구 중 하나는 서점이라고합니다

서점은 선형 버전 관리를 시도합니다 그래서 당신이 구할 때마다, 지금 당장 S3로 넘어갑니다 이 방에있는 신성 모독은 Google Cloud이지만, 일어 나라 그러나 Bookstore는 선형 버전 제어를 사용하는 방법입니다 사용자가 아무것도하지 않아도됩니다

네? 관객 : 당신이 노트를 가지고 있다고 가정 해 봅시다 그것을 파이썬 파일로 만들고 싶습니까? 그 일을하거나 할 수있는 쉬운 방법이 있습니까? 너는 [INAUDIBLE]해야만합니까? MATTHEW SEAL : 네 nbconvert 대시 – 대시 2 파이썬 오, 미안 들을 수없는 온라인에있는 사람들을위한 질문

노트북을 일반 파이썬 파일로 변환 할 수 있습니까? nbconvert는이를 수행하는 도구입니다 네? 관객 : Jupyter 노트북은 오픈 소스, 그래서 누구든지 그것에 기여할 수 있습니다, 또는 내가 그것에 기여하고 싶다면 어떻게 시작할 것인가? [알아들을 수 없는]? MATTHEW SEAL : 네 그 질문은 주피터의 오픈 소스 누구든지 기여할 수 있습니까? Donations Please 또는 큰 Do not enter 표시가 있습니까? 아니, 우리는하지 않는다 그래서 저는 Jupyter 팀에도 있습니다 그리고 네, 우린 친절하게하려고 노력합니다 우리가 사람들을 끌어들일 수 있기 때문에

몇 가지 패키지 또는 코드가 있습니다 좀 더 전문적인 사랑을 사용할 수있는, 그래서 우리는 새로운 사용자 친화적 인 문제를 태그하려고합니다 제지 공장에는 많은 새로운 기여자가 있습니다 구체적으로 제지 공장에 기여한다 실제로 중요한 점은 실제로 Google Cloud와 PR을 열어서, 이봐, 우리가 정말로 말했다

Google Cloud가이 작업을하고 싶어합니다 그리고 그것은 정말로 쉬웠다 그래서 나는 그것이 열려 있다고 말하고 많은 포럼이 있습니다 Discourse, Gitter 및 Google 그룹 모두에서 니가 있으면 모두 참여할 좋은 곳이야 일할 곳을 찾으려고 노력합니다

인터랙트는 슬랙 채널을 가지고있다 많은 것을 위해 가서 질문을 할 수 있습니다 방문자 : [INAUDIBLE]을 (를) URL 매개 변수로 사용 하시겠습니까? MATTHEW SEAL : URL 매개 변수로, URL에서 가져 오는 것 같습니까? 관객 : [INAUDIBLE] MATTHEW SEAL : 나는 그 질문에 확실히 순응하는지 확신하지 못한다 관객 : [INAUDIBLE] 노트를 열면 브라우저에서 [INAUDIBLE] URL은 맞습니까? MATTHEW SEAL : 네

청중 : [INAUDIBLE] 매개 변수를 추가 할 수 있습니까 ?? MATTHEW SEAL : 아, 알겠습니다 그래서 그는 UI에 노트를로드 할 때, 쿼리 매개 변수를 추가하여 노트북을 매개 변수화 할 수 있습니까? 아니, 템플릿을 통해 실제로 실행되지 않기 때문입니다 경로 그것이 UI 인간의 길입니다 아마도 쉽게 확장 할 수있을 것입니다

인터페이스 중 일부는 이제 실제로 추가했습니다 일류의 노트북 매개 변수 셀 버튼을 클릭하는 노트북 인터페이스로 그리고 그것은 전통적으로, 당신을 위해 세포를 만듭니다 오늘 네가해야 할 일은 따라서 매개 변수를 넣을 위치를 선택하는 방법입니다 그것을 적용하는 방법은 셀이있는 셀을 찾을 것입니다 태그 매개 변수를 지정하고이를 기본값으로 처리합니다 그래서 거기에는 무엇이든 기본값이라고 생각합니다 그 다음에는 주사하게됩니다

아무것도 찾지 못하면 그냥 맨 위에 놓습니다 그러나 쿼리 매개 변수 관점에서 볼 때, 실제로 매개 변수화하는 인터페이스가 아닙니다 코드 셀을 직접 작성하기 때문에 또는 직접 기본 태그 셀을 작성하십시오 자동으로 그렇게하지는 않습니다 시원한

관객 : 이것은 기능 요청의 이상입니다 각 셀에 대해 [INAUDIBLE] 정보가 있습니까? 왜냐하면 뭔가 진짜라면, 당신은 원한다 20 분이 걸렸는 지 알기 위해 [INAUDIBLE] 또는 2 시간 반이 걸렸습니다 MATTHEW SEAL : 기능 요청은 당신이 얼마나 오래 세포를 추적 할 수 있도록 무언가를 추가 할 수 있습니까? 실행했다? 당신이 제지소로 달리는다면, 그것은 그렇게합니다 관객 : 아, 이미 가지고 있니? MATTHEW SEAL : 네

관객 : 좋아요 관객 : 당신은 이것을 이미 언급했을 것입니다, 그러나 그것이 실패하면, 방법이 없습니다 실패한 곳에서 계속 실행을 시작 하시겠습니까? 내가 말할 것 같지 않다고 가정합시다 [INAUDIBLE]이 (가) 중단되었습니다 따라서 셀의 메타 데이터를 사용하면 아직 완료되었는지 여부를 확인할 수 있습니다

보류 중이거나 운영 중입니다 보류중인 것이 있다고 가정 해 봅시다 중단 한 부분에서 실행을 시작하거나 계속할 수 있습니까? MATTHEW SEAL : 근본적으로, 커널이 실패하면 제지 실은 멈추고, 커널을 다시 부착해서 실행할 수 있습니까? 현재 도구를 그대로 사용하면 커널을 종료 할 때 실패하거나 시도합니다 왜냐하면 커널이 이미 죽어라 코드를 작성할 수 있습니다

아마 50 줄, 100 줄의 코드를 취할 것입니다 그것을하지 않기 위해서 실제로, 확장 부분 어디에서 I / O 동기화를 플러그 앤 플레이 할 수 있는지 말했고, FSTP와 마찬가지로, 플러그 앤 플레이를 할 수 있습니다 엔진이라고합니다 따라서 사용자 정의 실행을 등록 할 수 있습니다

엔진 그리고 당신은 유지할 수있는 커스텀 엔진을 등록 할 수 있습니다 – 원숭이 패치로 덮어 쓸 수 있어요 nbconvert는 커널을 종료하고 종료하지 않습니다 어쩌면 디버그 또는 인터럽트라고하는 엔진을 가질 수 있습니다 그런 다음 해당 버전의 엔진을 실행할 수 있습니다

당신이 실행할 때, 그리고 나서 그것을 떠날 수 있습니다 그래서 다시 연결할 수 있습니다 인터페이스 지점에서 약간 복잡 할 것입니다 보기의, 그러나 육체적으로 가능하다, 상자 밖에서는 그렇게하지 않습니다 관객 : 슬라이드 중 하나에서, 너는 Jupyter가 있음을 보여 주었다

서버 [무적] 노트북 그렇다면 누가 그 서버들을 관리합니까? 이러한 서버를 계속 가동시키는 것은 누구의 업무입니까? MATTHEW SEAL : 네 그래서 문제는 아키텍처 다이어그램에서였습니다 이 Jupyter 서버가 있습니다 이 서버를 누가 운영합니까? 걔들 뭐해? 누가 그들을 소유하고 있습니까? 대답은 일반적으로 노트북 플랫폼 팀입니다

많은 곳에서 노트북 팀이 있습니다 Google이 여기 있습니다 Netflix 않습니다 대부분의 대형 공급 업체가합니다 일반적으로 서버를 호스팅하는 서버입니다

모든 것을 실행하고 파악하고있다 플랫폼의 나머지 부분과 함께 그것을 조정하는 방법, 그래서 자원을 분리하거나 요구에 따라 분리하는 방법 오픈 소스에는 몇 가지 도구가 있습니다 JupyterHub와 같은 당신을 도울 방법입니다 밖으로 물건

그리고 그것은 꽤 빠르게 진화하는 이야기라고 생각합니다 하지만 일반적으로 노트북 플랫폼 팀 그것이 서버 관리입니다 그런 다음 Launch My Notebook을 클릭하면 또는 노트북을로드하려고하면 동적으로 자원을 할당 할 수 있습니다 플랫폼에 따라 다릅니다 일부 플랫폼에는 전용 플랫폼이 있습니다

자원 또는 공유 자원 그것은 당신이 당신의 플랫폼이 옳다고 생각하는 것을 할 수있게합니다 또한 사람들이 원격 통화 중인지 여부는 알 수 없습니다 가능하다면 사람들에게 질문을하고 싶습니다 관객 : [INAUDIBLE]

MATTHEN SEAL : OK 확실한 관객 : 사람들이 건물을 어떻게 돌아 다니 느냐 더 복잡한 파이프 라인? 예를 들어 노트북 A 당신은 노트북 B에 맞게하고 싶습니다 그런 다음 몇 가지 노트를 펼치고 싶습니다

결과를 수집하고 노트북 B 등으로 이동합니다 따라서 정상적인 API는 실행 노트북에 있습니다 이런 종류의 복잡한 일들을 [무관심한] 사람들이 수행하도록하십시오 또는 일부 도구 [INAUDIBLE]가 있습니까 ?? MATTHEW SEAL : 네 그래서 제지 공장과 주피터 측 기본적으로 방금 만들었으므로 모든 스케줄링이 매우 쉽습니다

작업을 잘 수행하기 위해 DAG 실행이있는 도구, 이는 DAG를 수행하고 모든 것을 연결합니다 따라서 우리는 우리가 강화한 내부 일정 도구를 사용합니다 기본적으로 두 가지 직종이 있습니다 우리는 컨테이너를 실행하고 제지기로 컨테이너를 운영합니다 그것이 두 가지 직업 유형입니다

그러나 실제로 사용자 관점에서 볼 때, 우리는 많은 템플릿을 가지고 있습니다 그러나 거기에, 우리는 그것을 도구에 남겨 둡니다 그 사람은 스케줄을 알고, 제재소가 무엇인지 모릅니다 그 직업을 잘 수행하는 것 오픈 소스 예제는 Airflow입니다

기류가 있다면 매우 쉽습니다 제지와 공기 흐름을 통합합니다 많은 사람들이 거기에서 그것을합니다 Luigi 또는 일부 다른 스케줄러 너무 쉽게 할 수 있습니다 그러나 나는 책임의 사슬에서, 나는 스케줄러가 잘 스케줄링하게 할 것이다

DAG 집행자가 DAG를 잘 실행하면 그리고 제재소가 잘 실행됩니다 네? 관객 : 슬라이드에 사용자 페르소나가 있습니다 게이트 엔지니어와 같은 물건 [INAUDIBLE] 전체 [INAUDIBLE] [INAUDIBLE]로 반복하거나 핸드 오프가 있습니다 다른 [INAUDIBLE] 사이에? MATTHEW SEAL : 네

그래서 질문은, 우리가 가진 다른 사람과 함께, 각 노트북의 수명주기 그 페르소나들? 그들은 양도 되었습니까? 팀에 실제로 의존 또는 해당 조직의 운영 방식 그래서 우리가 만든 도구는 Netflix에서 많은 조직에 걸쳐 있습니다 대부분의 경우, 사람들은 자신 만의 말을 할 것입니다 그들은 노트북에서 반복하고, 그 다음에는 그것을 예약하고, 우리는 묻는다 그들에게 몇 가지 지침을 따르십시오 또는 자신을 태우고 나쁜 일을하고 싶다면 그렇게 할 수 있습니다

우리는 넷플 릭스 (Netflix) 그래서 그것은 몇몇 장소와 조금 다릅니다 나는 몇 팀 말하고 아마 더 많은 반복 넷플 릭스 외부의 사이클, 아마 더 많은 핸드 오프 모델은 전통적인 모델입니다 바라기를,이 툴링은 그 마찰로 인해 핸드 오프가 더 많아졌습니다 검토하고 코드 검토와 더 비슷하게 수행하기 다시 쓰는 대신 그것을 templatizing 누군가의 작품 네? 관객 : 내 노트 입력은 Google 공동 노트입니까? MATTHEW SEAL : 예

그래서 Google Colab은 Jupyter입니다 Jupyter 사양을 따릅니다 콜 랩 (Colab) 노트북이라면 제재소로 달릴 것입니다 다른 노트북 인터페이스에서로드 할 수 있습니다 Jupyter 노트북 인터페이스

콜랩, 그런데, 네가 알지 못한다면, Google 제공 노트북 인터페이스 중 하나입니다 Google 클라우드 내부의 노트북 관리 Google 클라우드 내부이지만 Google 내부에는 존재하지 않습니다 청중 : 더 나은 시각화 도구가 있거나 비디오 용입니까 노트북이나 [INAUDIBLE]에 있습니까? MATTHEW SEAL : 비디오를위한 더 나은 시각화 도구가 있습니까? 노트북에? 몇 가지 노력이있었습니다 렌더링하는 구성 요소에 관한 것입니다 그러니깐

만약 네가 실제로 보면 커널과주고받는 메시지로서 무엇이 보내지는지, 그들은 실제로 – 코드를 보내 실행합니다 그리고 비동기 적으로, 당신은이 다른 메시지를 돌려 받게됩니다 메시지 중 하나를 디스플레이라고하며, 디스플레이에는 MIME 유형이 많이 있습니다 다른 프런트 엔드 렌더링과 마찬가지로 시스템은 이해할 것이다

그러면 UI가 MIME 유형 렌더를 구현할 수 있습니다 그래서 당신은 좋은 것을 구현할 수 있습니다 – 더 나은 비디오 렌더링 MIME 유형에 응답하는 것을 구현함으로써 원하는 비디오 편집기 플레이어에 연결합니다 그래서 몇 가지 UI에서 몇 가지 노력이있었습니다 더 나은 동영상을 만드는 방법 대부분 Jupyter의 폐쇄 소스 확장이며, 오픈 소스에서별로 그렇지 않습니다

나는 현재의 상태가 무엇인지 알지 못한다 오픈 소스 비디오 렌더링에 대한 좋은 점 하지만 당신이 모든 사람들이 사용하기 쉽고, nteract에서 nteract 프로젝트를 살펴 보았습니다 그것은 React 구성 요소의 모음입니다 다른 노트북 UI에서 사용하도록 만들어진 프런트 엔드

새로운 MIME 유형 렌더를 추가하는 것은 정말 쉽습니다 네? 관객 : 안녕하세요 그래서 나는 당신들이 어떻게 결정에 도달하는지 궁금해 너희들은 지방 수준에서 [무관심한]하고 싶어한다 [INAUDIBLE] 대신 다른 매개 변수를 사용해보세요

노트북 안의 [INAUDIBLE] 안에 있습니까? MATTHEW SEAL : 네 그래서 문제는 어떻게 우리가 노트북 수준에서 분기 결정을 내린다 노트북에서 분기하는 대신 및 iterating 그리고 그것은 실제로 – 방법에 대한 두 가지 디자인 철학이있어 보입니다 노트북이 진화 할 것입니다

그들 중 하나는 노트북을 블랙 박스 기능으로 사용했습니다 내가 실행할거야, 아니면 더 큰 시스템 나는 실행할 것이다 그리고 다른 하나는 각 세포가 그 기능적 유닛이 되어라 그러면 너는 어떻게 든 그 세포를 재사용 할 수 있습니다 Netflix는 노트북 측면에서 기울어지기 시작했습니다

그것은 더 간단했기 때문입니다 키스를 통해 모델을 만들면 추론하기가 더 쉬워졌습니다 다른 모델이 잘못되었거나 만들 수 없다는 의미는 아닙니다 하지만 우리가 본 것을위한 도구를 만들었습니다 가장 저항이 적은 경로로서 신뢰할 수 있음

시도하는 중 하나의 문제는 – 제재소가 취하는 의견 중 하나 이 노트북을 직선적으로 돌릴거야 노트북은 UI 측에서 노트북을 요구하지 않습니다 그러나 제재소는 그렇습니다 그리고 이것은 문제를 단순화하고 재현성 질문 다른 모델에서는 셀을 실행하는 방법, 거의 비순환 적 그래프가된다

귀하의 다른 세포의 실행 그리고 노트북에는 좋은 방법이 없었습니다 오늘날 노트북에서 DAG를 표현할 수 있습니다 우리가 그 길로 간다면 셀을 실행할 때 반복하고 싶다 아마 빌딩 툴링에 더 많은 도움이 될 것입니다

노트북 객체 내부에 DAG 설정 어떻게 세포를 실행할 것인가에 대해 그리고 그들이 어떻게 더 잘 관계하는지 그러나 우리는 그렇게하지 않았습니다 당시에는 더 복잡하다고 느꼈다 관객 : 전도 관점에서, 들어오는 새로운 데이터 과학자가있을 때 어떻게해야합니까? 근본적으로 무엇이 베스트 프랙티스인지 가르쳐줍니다 여기에 – 당신이 언급 한 것처럼, 많은 [부적절한] 그들 자신 및 [INAUDIBLE] 모든 곳의 [INAUDIBLE] 액세스 제어 그거 아니면

MATTHEW SEAL : 네 그래서 질문은, 어떻게 당신이 사람들에게 기내에 이러한 우수 사례에 대해 모범 사례를 실제로 모범 사례로 만든다 아마 모범 사례 대신에? 그게 네티플 릭스의 대답을 줄 수있어

나는 그것이 다른 많은 곳으로 번역 될 것이라고 생각하지 않는다 그리고 그것은 완벽하지 않습니다 제 생각에, 넷플 릭스의 경우, 우리는이 개념에 많이 의지합니다 자유와 책임감 팀, 개인은 자유롭게 원하는대로 할 수 있습니다

우리는 경험 많은 사람들을 고용했을 것으로 기대합니다 책임있는 결정을 내릴 것입니다 때로는 조직 내에서, 조직 또는 그 팀 사람들에게 가장 잘 탑승하는 방법에 대한 결정을 내 렸습니다 그래서 우리는 도구를 제공하려고 노력합니다 사람들에게이 도구들에 대해 알리십시오

패턴과 문서는 어딘가에 있습니다 그리고 우리는 책임을 팀에 남겨 둡니다 이 중 어느 것을 추적해야하는지 파악 사용자와 함께 광고를 게재 할 수 있습니다 중앙 집중식 온 보딩이 있습니다 스케줄러 및 노트북에 대한 교육을 실시합니다

매월 신규 채용 및 인력 채용 누가 그게 뭔지 모르는 사람 그래서 우리는 약간의 훈련 모델을 수행합니다 그런 식으로 따라가보십시오 그것은 우리 문화 안에서 꽤 잘 작동합니다 하지만 다른 문화권에서는 다른 접근 방식을 취합니다

시원한 나는 그때 내 목소리를 구할 수 있을까? 굉장해 나는 우리가 어디 있는지에 대해 확신하지 못한다 오, 또 다른 질문이 있습니다 승인

관객 : 저는 데이터 과학자로 일합니다 그리고 대부분의 프로토 타이핑 우리는 Jupyter [INAUDIBLE]와 일했습니다 그래서 제 질문은 제지를 사용함으로써, 출력을 별도의 노트 파일에 넣으려고합니다 그게 무슨 이점이 있니? 기본적으로 프로덕션을 위해 어떻게 든 노트북을 다시 전송 효율성 및 기타 사항에 대한 Python 스크립트 그– 어떻게 또는 왜 당신이 필요한지 궁금합니다 그 출력을 다른 파일에 코딩합니다

MATTHEW SEAL : 네 그래서 질문은 왜 분리되어 있는지에 관한 것이 었습니다 생산에 들어갈 때의 노트북 데이터 과학 라이프 사이클이 같은 노트북 안에 그것이 그들이 운영되는 방식입니다 이제 저는 두 가지 노트를 생각해야합니다

야생에 존재한다 우리가 이것을 한 몇 가지 이유가 있습니다 하나는 데이터 플랫폼이 이렇게 우리와 함께 확인을 만들었습니다 그래서 그게 사실 – 정말 매력적입니다 너는이 다리를 십자가에 매고있다

불변의 보증에 대해 나는이 소스를 실행하고 결과 이 결과에서 그래서 순수한 실행에서, 그것이하고있는 것과는 독립적으로, 좋은 보안과 재사용 성을 제공합니다 외부에있는 사람들을위한 디버그 기능 당신의 노트북이 실제로 무엇을했는지 아는 것 또는 그것이 어떻게 작동해야하는지 이것이 하나의 측면입니다

우리가 가진 또 다른 측면은 우리가 방법에 대해 아주 잘 기억하고 싶다 노트북이 시간이 지남에 따라 변경되었거나 마지막으로 반복되는 방식 여러 번 실패합니다 뭔가 실패하고 플랫폼 엔지니어가 또는 누군가가 도우려고하면 무엇이 달렸는지 살펴보고 그것이 왜 효과가 없었는지 파악하십시오 마지막으로 성공한 버전이 무엇인지 아는 것은 실제로 마지막으로 성공한 경기를 볼 수 있기 때문에 편리합니다

현재 실행과 비교하십시오 그 이유에 대해 많은 것을 알 수 있습니다 뭔가 작동하지 않습니다 이제는 어떻게 모델로 다시 채워지 죠? 또는 템플릿은 어떻게 사용합니까? 개발 측면에서 발생하는 한가지, 특정 매개 변수화를 사용하여 일정을 예약하면, 보통, 당신이 그걸 가지고 놀려고 할 때, 동일한 매개 변수화가 필요합니다 많은 경우 데이터 과학 사이클에 종사하는 사람들 노트북을 예약하고, 실행하고, 그들이 어떻게 달렸는지 확인합니다

그리고 그들은 매개 변수 셀을 다시 복사하여 실행할 것입니다 같은 소스이기 때문에 전체 노트북을 복사하십시오 그런 다음 작업이 완료되면 매개 변수 셀을 삭제하고 저장하십시오 그래서 주기적으로 조금 수동으로 진행됩니다 덜 수동적으로 만들 수있는 도구가있을 수 있습니다

그리고 저는 그것이 툴링이 많이 쓰이는 부분이라고 생각합니다 이 가장자리를 부드럽게합니다 정말 큰 승리를위한 약간의 충돌입니다 생태계의 나머지 부분과 협력해야한다 이 질문에 답하는 데 도움이됩니까? 승인

굉장해 솔직히 내 목소리 – 나는 주변에있을거야 어쨌든 나는 그것을 잃을 것이다 하지만 모두에게 감사 드리며 즐거웠기를 바랍니다 [박수 갈채] [음악 재생]