Docker is a modern technology for containerizing software. While packaging to a working version is relatively easy, creating a lightweight Docker image presents a challenge. In this note, I will briefly discuss an example from my university class on software engineering. The task was to containerize a card game web application, written by students as …
Author archives: mskorski
Approximate Nash Equilibrium by Regret Matching
Two-player games can be solved by following a very intuitive algorithm called Regret Matching 1. Players modify their action probabilities according to the so-called regrets or advantages, which can be thought as consequences of alternative choices. For a good overview of the topic, see the friendly yet detailed introduction by Neller and Lanctot 2. The …
Continue reading “Approximate Nash Equilibrium by Regret Matching”
Tracing GPU Resources
This post explains how to measure GPU utilisation in real-time using tools provided by NVIDIA.
Compiling Torch Code – Example on Memory Reduction
Staring from the version 2.x PyTorch, a popular deep-learning framework, introduces a JIT compiler torch.compile. In this post, I am sharing a non-trivial example demonstrating how this tool can reduce memory footprint on GPU. The point of departure is a sub-routine which computes similarity, similar to covariance but not as friendly to compute. For two …
Continue reading “Compiling Torch Code – Example on Memory Reduction”
Dealing with geo coordinates
Location on maps are often provided in a Coordinate Reference System (CRS). In computer vision projects, however, we need to translate them to pixels. Plotting and transformations can be accomplished with the rasterio Python module. Below I share a useful snippet showing how to convert CRS locations to pixel coordinates:
Setting up CUDA tools properly
Diagnosing CUDA setups – two use-cases from real development.
Lego Bricks in LaTeX
Who does not enjoy lego bricks, raise a hand! In this post, I am sharing an elegant and efficient way of plotting bricks under 3d view in TikZ. Briefly speaking, it utilizes canvas transforms to plot facets, and describes boundaries of studs in a simple way with cylindrical coordinates based on the azimuth angle (localizing …
Cylinders in LaTeX the Easy and Correct Way
Drawing cylinders in vector graphic is a common task. It is less trivial as it looks at first glance, due to the challenge of finding a proper projection. In this post, I share a simple and robust recipe using the tikz-3dplot package of LaTeX. As opposed to many examples shared online, this approach automatically identifies …
Continue reading “Cylinders in LaTeX the Easy and Correct Way”
Automating Accessors and Mutators Tests
In object-oriented programming, there are plenty of accessors and mutators to test. This post demonstrates that this effort can be automated with reflection 🚀. The inspiration came from discussions I had with my students during our software-engineering class: how to increase code coverage without lots of manual effort? 🤔 Roughly speaking, the reflection mechanism allows …
Tracking Training Performance of LDA Models
In my recent open source contribution I enabled callbacks in the scalable (multi-core) implementation of Latent Dirichlet Alocation in the gensim library 1. This will, in turn, allow users for faster and more accurate turning of the popular topic extraction model. An obvious use case is monitoring and early stopping of training, with popular coherence …
Continue reading “Tracking Training Performance of LDA Models”