Personal DL box

Plus you may have so much fun cooling it :wink:


The 1080 Ti should be about 40% faster than the 1070 for CNN workloads based on the benchmarks I’ve looked into.

The new Pascal 1070 Ti was designed to slot in between the Maxwell 1070 and 1080 in terms of performance, so we should expect it to be somewhere around 65% of the speed of a 1080 Ti.

1070 1070 Ti 1080 1080 Ti
Cuda Cores 1920 2432 2560 3584
FP32 (TFLOPS) 6.5 8.1 9.0 11.5
Memory Speed (Gbps) 8 8 11 11
Memory Bandwidth (GBps) 256 256 352 484
Rel CNN Perf 0.6 0.7 1.0
1 Like

I did not understand your post until I faced this need. Guys, ngrok is amazing if you dont have static IP- it allows you to expose a web server running on your local machine to the internet. All you need to do is to setup jupyter notebook security, run it on your DL box and open with ngrok the same port. You can get public URL to your DL box through WEB site. So to ensure you dont lose access to your home server:

  • setup PC auto turn on (in case something happened)
  • auto launch jupyter notebook
  • auto launch ngrok

Nice. I’ve been meaning to set up reverse ssh tunneling. This seems much simpler.

There’s also the open source frp which some folks on HN recommended. Older hn discussion here


Fun fact! With an Intel Core i5-7500, 3.4GHz, 6MB CPU running the lesson 1 notebook (with data augmentation) it maxes out the CPU cores:

While the GPU sits nearly idly with 1080ti :slight_smile: It never reached over 60 C and nvidia-smi dmon showed utilization not exceeding 50%.

I think this is really useful to know when thinking of setting up your own box. Especially when it comes to random forests (which I completely didn’t foresee learning about but I am super happy about the ml1 lectures being shared!) getting a stronger CPU might not be a bad idea if you can afford it, and more ram.

If I were buying the parts again I would probably look at Ryzen, would likely completely skip bigger HDD (got a 3TB one) and would have considered getting more RAM.

Oh well - the only way to learn is through experience :slight_smile:


I tried to re-do everything again and followed all the installation steps. After I ran a notebook, I got an error message "No module named “bcolz”. Then, I used the command conda install bcolz. But, bcolz is already installed.

I closed everything and re-launched a terminal. The "No module named “bcolz” error message persists. Please help!

If you run the python shell from the terminal, can you import bcolz? If so maybe try killing the jupyter notebooks process and starting that again, making sure you do source activate fastai first. That sets up your environment to point to the right python

Still no luck.

sorry I’m out of ideas

Maybe add the --force flag to conda install bcolz?

I did the same gpu load check as you yesterday (just bought a 1080 ti after reviewing all the notes on this thread again). I’m still really happy with my 6 core Ryzen, but I’d pay up for a Threadripper on my next build (supports way more ram, NVMe ssds, gpus).

IMHO you built in a good way. Having a solid GPU and not having to pay the hourly cloud rates for that - esp given how long it takes to train models as we progress, is awesome. Its comparatively cheap spin up a bunch of CPUs with reasonable ram to throw at shorter running ml models (and the aws credits will go a long way).

1 Like

conda env list

That will show the environments on your system.

Looks kind of weird that your environment is named fastai/

1 Like

Thanks a lot @rob @radek and Jeremy. Finally, it works.

Alternatively, pip install fastai is available - thread


Glad to hear it. What was the solution?

@radek, probably you already know but just in case, if I see GPU utilization is low and GPU memory is under say 50% I will increase batch size and usually means much more optimized training.

About CPU, I agree that even if not the number one bottleneck in DL it will pay to have a good enough one, I had for some months this year a dedicated server with Ryzen(8cores, 16 threads) and really happy about its performance, good benchmarkings as far as I know.

And, lastly, I think CPU RAM to be the bottleneck many times because data wrangling requires a lot (and inversely correlated with your coding efficiency). I have 32 GB laptop locally, minimum 64GB on rented servers… and I always find myself in situations where I will need more. For a personal DL box, that I dont have, I wouldn’t have less than 128GB if possible,

Kind of beefy specs but, well Christmas is near already! :grinning:

The nice thing about RAM is you can upgrade it after the fact. So as long as you are mindful of wanting 128GB at some point, you can build a system with that in mind and actually just put like 32GB in with the intention to add the rest later. Just make sure not to use like 8X4GB sticks if you want to bump it up later.

1 Like

I remove all things and re-install it again and again. Once, it was working, I stopped. :sweat_smile:


Thats, obviously, an explanation of a day !!! :rose: :joy:


@beacrett What is your full DL box setup?


  • Ryzen 5 1600 (6 core, can over clock if desired, comes with cooler)
  • AM4 B350 chipset motherboard (B350 is the middle tier of their chipsets - it is worth it for the small price bump)
  • 16GB DDR4 3200 RAM (fastest supported by my processor, going to get another 16GB)
  • 250GB NVMe M.2 SSD
  • 2TB HDD
  • 1080 ti (EVGA GeForce GTX 1080 Ti SC Black Edition - very happy with this so far - great cooling)
  • 750 watt modular power supply (would need to get a bigger one if adding a second GPU)
  • Dual boot Windows 10 / Ubuntu 16.04 LTS

imho, its worth getting the fastest ram supported by your CPU (within cost reason). Keep track of the model and its timings - you may need to manually change settings in the bios to ensure it is running at full speed and you want any new ram you buy to match the speed and timings for optimal performance (try to order the same model to keep it simple)