First of all, I know GPU matters much more than CPU
In general this is wrong or very naive. See also this answer (then consider SBCL) and that one (and also this and that).
The OS I'm using is Windows 10,
That is your biggest mistake, assuming you have access (and some understanding) to the source code of your application. See below why. Notice that the most expansive resource is your brainpower.
For example, you might deal with a large volume of data (e.g. a few terabytes, e.g. of post-processed raw HTML texts with NLP preprocessing in mind). In that case, SSD or RAM may matter much more than the GPU. See also this, but consider also any serious free software database management system (e.g. PostGreSQL, MongoDB, etc etc etc...)
On the contrary, in some applications, the volume of data is small, but its incoming bandwidth is very important (real-time video applications, Ã la autonomous vehicles).
In a comment, you mention bird recognition. Look into these slides and their mention of https://xkcd.com/1425/
Ask yourself: do you have hundred of gigabytes of bird photos? Tagged by humans? Do you want to process them quickly for an industrial application, or are you just starting to learn machine learning techniques. You'll need a decade to understand machine learning, but you could learn it with a cheap PC (or even a Raspberry Pi). You should take months or years to read books and papers (and wikipages).
Be aware that machine learning techniques can be tricked (see also this)
See also this (look who wrote that!)
My recommendation is to learn more about computer science, computer architecture, several programming languages, operating systems, algorithms, free software (e.g. TensorFlow and Ghudi ...), Linux.
If you code something which classifies successfully just a hundred thousands of bird images, going to ten million images is simply a matter of money. But learning to code that thing will take you months or years.
For learning and job opportunities purposes, investing more in books and less in hardware could be worthwhile, especially if you contribute to some existing open source software project (with your real name) on github or gitlab.
I used neural networks in the previous century on Sun workstations running some SunOS5, before even GPUs, as we know them today, existed. That (proprietary) code was on Unix, and today many free software or open source machine learning software exist (e.g. on github etc) and runs on most Linux PCs. Most of these libraries don't require GPUs, but some of them can take advantage of CUDA or of OpenCL (and OpenCL don't need a GPU, just take advantage of it when you enable it; an OpenCL code just runs a bit slower without GPUs, by a practical time factor of 10x to 1000x). Look also into OpenACC & MPI. You'll find free software (or at least gratis) implementations of all of them on Linux.
In a comment you also ask;
which CPU feeds the GPU better?
But that also depends not only on the executed code, but also on the data. And the data of your problem is, per se, problem specific.
In more concrete words, the same code (on Linux, e.g. using TensorFlow suitably configured to take advantage of your GPU) using OpenCL to drive the GPU will feed it in a rhythm which depends mostly of the data itself - not just of the code. Both GPU and CPU are involved, and that is exactly why OpenCL programming is so difficult. (I happened to try automatize that in a former OpenGPU project).
If you wish to solve a particular machine learning problem faster and already legally have the source code for that (running on Linux), consider also renting Cloud computing resources, and cloud computing is mostly used for machine learning purposes (read also about surveillance capitalism, since your question is at the heart of it). Most of them have fast GPGPUs. That is probably the cheapest and greenest solution for your concrete problem. Today, all cloud computers and every top500 supercomputer run on some variant of Linux. And cloud computing is counter-unintuitively greener than an equivalent PC box (at least in France, where electric power is mostly nuclear).
You mentioned a AMD ThreadRipper 2920X. I am sure that, every thing else being the same, my AMD 2970WX Linux workstation would solve your problem faster than your AMD 2920 based Linux system (because an 2970 has more cores!), with the same source code. And Linux (used in datacenters on the Cloud, in top500 supercomputers) is the most practically useful operating system for machine learning. For machine learning programming you should use Linux (not Windows) because it usually takes better advantage of multi-core machines, supercomputer, cloud computers.
The scope of this post is to limited to talk about the very specific 2 CPUs: ThreadRipper 2920X and Ryzen 7 3700X in terms of performance for AI model training. Nothing more than this.
Did you google that question: ThreadRipper 2920X vs Ryzen 7 3700X ? The following step is to use your intuition to find out, amongst the various benchmarks mentioned in answers, which one is the most similar to your code (assuming you understand it). Think also of energy costs.
The code is written in Python.
Are you aware that Python is a lot slower than C++? Of course, most of the computer time would be spent in numerical libraries (those coded also in OpenCL to use your GPUs). But the same algorithm coded in C++ (or even in Go) and in Python is a lot faster in C++ or Go. Depending on the problem, you could win just a few percents, or a factor of ten (be aware of Python's GIL and consider using Guile - you could be more productive in it than with Python. See SICP, still the best introduction to programming I ever read).
So I definitely need a GPU.
No, you need more computing power. And you could rent it and build then use some Web service above that using a cheap Wifi connection (even with a RaspBerryPi) to the Internet. Think also of IoT approaches to your (still unclear) problem. In most parts of Europe or USA, IoT approaches (combined with cloud computing) make a lot of economical sense. For pond surveillance, they probably are the cheapest. And I cannot imagine why pond surveillance is so confidential to forbid such a mixed (IoT + cloud computing) approach. Your pond surveillance problem is not safety-critical.
My question is, should I keep everything same but just replace Threadripper 2920X with Ryzen 7 3700X? or should I stick to TR 2920X? and Why?
That question is off-topic here. https://superuser.com/ could be a better place for it
PS. A few paragraphs of my continously evolving Bismon draft report, and several references there, the DECODER project, are very relevant to your question.
PPS. Read more about TRLs. For learning purposes, they don't matter a lot (but your own time does). For commercial or lucrative purposes, it is the main issue (and costs depend exponentially on the TRL level).
basile@starynkevitch.net
(with the URL of your question) to discuss more these topics. See also some paragraphs of my often updated Bismon draft report mentioning future machine learning approaches. $\endgroup$ – Basile Starynkevitch Sep 3 '19 at 13:34