Artwork

Michael Kennedy and Brian Okken에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Michael Kennedy and Brian Okken 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.
Player FM -팟 캐스트 앱
Player FM 앱으로 오프라인으로 전환하세요!

#434 Most of OpenAI’s tech stack runs on Python

29:01
 
공유
 

Manage episode 486532694 series 1305988
Michael Kennedy and Brian Okken에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Michael Kennedy and Brian Okken 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.
Topics covered in this episode:
Watch on YouTube
About the show

Sponsored by Digital Ocean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit

Connect with the hosts

Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

Brian #1: Making PyPI’s test suite 81% faster

  • Alexis Challande
  • The PyPI backend is a project called Warehouse
  • It’s tested with pytest, and it’s a large project, thousands of tests.
  • Steps for speedup
    • Parallelizing test execution with pytest-xdist
      • 67% time reduction
      • --numprocesses=auto allows for using all cores
      • DB isolation - cool example of how to config postgress to give each test worker it’s on db
      • They used pytest-sugar to help with visualization, as xdist defaults to quite terse output
    • Use Python 3.12’s sys.monitoring to speed up coverage instrumentation
      • 53% time reduction
      • Nice example of using COVERAGE_CORE=sysmon
    • Optimize test discovery
      • Always use testpaths
      • Sped up collection time. 66% reduction (collection was 10% of time)
      • Not a huge savings, but it’s 1 line of config
    • Eliminate unnecessary imports
      • Use python -X importtime
      • Examine dependencies not used in testing.
      • Their example: ddtrace
        • A tool they use in production, but it also has a couple pytest plugins included
        • Those plugins caused ddtrace to get imported
        • Using -p:no ddtrace turns off the plugin bits
  • Notes from Brian:
    • I often get questions about if pytest is useful for large projects.
    • Short answer: Yes!
    • Longer answer: But you’ll probably want to speed it up
    • I need to extend this article with a general purpose “speeding up pytest” post or series.
    • -p:no can also be used to turn off any plugin, even builtin ones.
      • Examples include
        • nice to have developer focused pytest plugins that may not be necessary in CI
        • CI reporting plugins that aren’t needed by devs running tests locally

Michael #2: People aren’t talking enough about how most of OpenAI’s tech stack runs on Python

  • Original article: Building, launching, and scaling ChatGPT Images
  • Tech stack: The technology choices behind the product are surprisingly simple; dare I say, pragmatic!
    • Python: most of the product’s code is written in this language.
    • FastAPI: the Python framework used for building APIs quickly, using standard Python type hints. As the name suggests, FastAPI’s strength is that it takes less effort to create functional, production-ready APIs to be consumed by other services.
    • C: for parts of the code that need to be highly optimized, the team uses the lower-level C programming language
    • Temporal: used for asynchronous workflows and operations inside OpenAI. Temporal is a neat workflow solution that makes multi-step workflows reliable even when individual steps crash, without much effort by developers. It’s particularly useful for longer-running workflows like image generation at scale

Michael #3: PyCon Talks on YouTube

Brian #4: Optimizing Python Import Performance

  • Mostly pay attention to #'s 1-3
  • This is related to speeding up a test suite, speeding up necessary imports.
  • Finding what’s slow
    • Use python -X importtime
    • Ex: python -X importtime ptyest
  • Techniques
    • Lazy imports
      • move slow-to-import imports into functions/methods
    • Avoiding circular imports
      • hopefully you’re doing that already
    • Optimize __init__.py files
      • Avoid unnecessary imports, heavy computations, complex logic
  • Notes from Brian
    • Some questions remain open for me
      • Does module aliasing really help much?
    • This applies to testing in a big way
      • Test collection imports your test suite, so anything imported at the top level of a file gets imported at test collection time, even if you only are running a subset of tests using filtering like -x or -m or other filter methods.
      • Run -X importtime on test collection.
      • Move slow imports into fixtures, so they get imported when needed, but NOT at collection.
  • See also:

Extras

Brian:

  • PEPs & Co.
    • PEP is a ‘backronym”, an acronym where the words it stands for are filled in after the acronym is chosen. Barry Warsaw made this one up.
    • There are a lot of “enhancement proposal” and “improvement proposal” acronyms now from other communities
  • pythontest.com has a new theme
    • More colorful. Neat search feature
    • Now it’s excruciatingly obvious that I haven’t blogged regularly in a while
      • I gotta get on that
    • Code highlighting might need tweaked for dark mode

Michael:

Joke: There is hope.

  continue reading

440 에피소드

Artwork
icon공유
 
Manage episode 486532694 series 1305988
Michael Kennedy and Brian Okken에서 제공하는 콘텐츠입니다. 에피소드, 그래픽, 팟캐스트 설명을 포함한 모든 팟캐스트 콘텐츠는 Michael Kennedy and Brian Okken 또는 해당 팟캐스트 플랫폼 파트너가 직접 업로드하고 제공합니다. 누군가가 귀하의 허락 없이 귀하의 저작물을 사용하고 있다고 생각되는 경우 여기에 설명된 절차를 따르실 수 있습니다 https://ko.player.fm/legal.
Topics covered in this episode:
Watch on YouTube
About the show

Sponsored by Digital Ocean: pythonbytes.fm/digitalocean-gen-ai Use code DO4BYTES and get $200 in free credit

Connect with the hosts

Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

Brian #1: Making PyPI’s test suite 81% faster

  • Alexis Challande
  • The PyPI backend is a project called Warehouse
  • It’s tested with pytest, and it’s a large project, thousands of tests.
  • Steps for speedup
    • Parallelizing test execution with pytest-xdist
      • 67% time reduction
      • --numprocesses=auto allows for using all cores
      • DB isolation - cool example of how to config postgress to give each test worker it’s on db
      • They used pytest-sugar to help with visualization, as xdist defaults to quite terse output
    • Use Python 3.12’s sys.monitoring to speed up coverage instrumentation
      • 53% time reduction
      • Nice example of using COVERAGE_CORE=sysmon
    • Optimize test discovery
      • Always use testpaths
      • Sped up collection time. 66% reduction (collection was 10% of time)
      • Not a huge savings, but it’s 1 line of config
    • Eliminate unnecessary imports
      • Use python -X importtime
      • Examine dependencies not used in testing.
      • Their example: ddtrace
        • A tool they use in production, but it also has a couple pytest plugins included
        • Those plugins caused ddtrace to get imported
        • Using -p:no ddtrace turns off the plugin bits
  • Notes from Brian:
    • I often get questions about if pytest is useful for large projects.
    • Short answer: Yes!
    • Longer answer: But you’ll probably want to speed it up
    • I need to extend this article with a general purpose “speeding up pytest” post or series.
    • -p:no can also be used to turn off any plugin, even builtin ones.
      • Examples include
        • nice to have developer focused pytest plugins that may not be necessary in CI
        • CI reporting plugins that aren’t needed by devs running tests locally

Michael #2: People aren’t talking enough about how most of OpenAI’s tech stack runs on Python

  • Original article: Building, launching, and scaling ChatGPT Images
  • Tech stack: The technology choices behind the product are surprisingly simple; dare I say, pragmatic!
    • Python: most of the product’s code is written in this language.
    • FastAPI: the Python framework used for building APIs quickly, using standard Python type hints. As the name suggests, FastAPI’s strength is that it takes less effort to create functional, production-ready APIs to be consumed by other services.
    • C: for parts of the code that need to be highly optimized, the team uses the lower-level C programming language
    • Temporal: used for asynchronous workflows and operations inside OpenAI. Temporal is a neat workflow solution that makes multi-step workflows reliable even when individual steps crash, without much effort by developers. It’s particularly useful for longer-running workflows like image generation at scale

Michael #3: PyCon Talks on YouTube

Brian #4: Optimizing Python Import Performance

  • Mostly pay attention to #'s 1-3
  • This is related to speeding up a test suite, speeding up necessary imports.
  • Finding what’s slow
    • Use python -X importtime
    • Ex: python -X importtime ptyest
  • Techniques
    • Lazy imports
      • move slow-to-import imports into functions/methods
    • Avoiding circular imports
      • hopefully you’re doing that already
    • Optimize __init__.py files
      • Avoid unnecessary imports, heavy computations, complex logic
  • Notes from Brian
    • Some questions remain open for me
      • Does module aliasing really help much?
    • This applies to testing in a big way
      • Test collection imports your test suite, so anything imported at the top level of a file gets imported at test collection time, even if you only are running a subset of tests using filtering like -x or -m or other filter methods.
      • Run -X importtime on test collection.
      • Move slow imports into fixtures, so they get imported when needed, but NOT at collection.
  • See also:

Extras

Brian:

  • PEPs & Co.
    • PEP is a ‘backronym”, an acronym where the words it stands for are filled in after the acronym is chosen. Barry Warsaw made this one up.
    • There are a lot of “enhancement proposal” and “improvement proposal” acronyms now from other communities
  • pythontest.com has a new theme
    • More colorful. Neat search feature
    • Now it’s excruciatingly obvious that I haven’t blogged regularly in a while
      • I gotta get on that
    • Code highlighting might need tweaked for dark mode

Michael:

Joke: There is hope.

  continue reading

440 에피소드

Tất cả các tập

×
 
Loading …

플레이어 FM에 오신것을 환영합니다!

플레이어 FM은 웹에서 고품질 팟캐스트를 검색하여 지금 바로 즐길 수 있도록 합니다. 최고의 팟캐스트 앱이며 Android, iPhone 및 웹에서도 작동합니다. 장치 간 구독 동기화를 위해 가입하세요.

 

빠른 참조 가이드

탐색하는 동안 이 프로그램을 들어보세요.
재생