<div dir="ltr"><span style="font-size:12.8px">Hi Vladimir,</span><div style=""><span style="font-size:12.8px">To answer your questions:</span><br><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">1) The framework is designed to allow the easy creation of models for training and inference. The framework is intended to be used both for training and deployment on all platforms.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">2) Yes currently only the CudaComputeService is implemented. I am only one guy, and I didn&#39;t have the resources to implement other service types such as Metal.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">3) The same Swift code should run on iOS, if a compute service is provided such as Metal.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I started this project when only Caffe1 existed and was hoping Apple would be interested in my work. </div><div style="font-size:12.8px">While I was working on the project, Microsoft, Google, Facebook, and Amazon invested literally thousands of man years of effort into their own frameworks. My code is still significantly faster, but without a major investment there is no way one guy can compete anymore. There is also no good financial reason for an investment now, because the competing products are free.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Apple bought Turi and is now using CoreML for deployment and private training tools from the Turi acquisition.</div><div style="font-size:12.8px">At this point from a business point of view, it doesn&#39;t make sense for me to add any more to this code base. That is why I made it publicly available and hope it will help others.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Who knows, perhaps maybe someone will offer me an interesting job :)</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Today I would suggest that if you are trying to deploy on iOS, use Caffe2 for training and CoreML for deployment. CoreML has a converter from Caffe2 to CoreML to make it easy for you.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">In a side mail you mentioned that you hate Python. I don&#39;t much like python either, and I see a lot of benefits of a pure Swift solution, particularly for the ability to directly connect to all of the Apple UI libraries to create advanced visualization apps.</div><div style="font-size:12.8px">Unfortunately all of the major toolkits are using python, including the internal Turi tools. You can use Caffe2&#39;s C++ API if you prefer, but it&#39;s probably in your best interest to just live with the python way of doing things for now.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">The core of all the major frameworks are written in C++, so I think the reason python was chosen is it is much easier than C++ for running experiments <span style="font-size:12.8px">and visualization. Unfortunately deployment was an after thought for most of the frameworks. In the Caffe2 rewrite, they made more of an effort.</span></div><div style="font-size:12.8px"><span style="font-size:12.8px"><br></span></div><div style=""><span style="font-size:12.8px">On a side note, Microsoft&#39;s CNTK defined something called BrainScript for defining models. It appears to be very clean, concise, and superior to python. They did a nice job. However, I read in some forums that they are thinking of phasing it out, because the community just wants to use python. So a better technical solution is not always the best business decision.</span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Good luck, Ed</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 3, 2017 at 11:38 AM, Vladimir.S <span dir="ltr">&lt;<a href="mailto:svabox@gmail.com" target="_blank">svabox@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 03.10.2017 19:02, Edward Connell via swift-users wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi All,<br>
Sorry something strange happened with the first post, so I am reposting this.<br>
<br>
I&#39;ve recently wrapped up an ML framework research project that I&#39;ve been working on for some time.<br>
It addresses a lot of difficult design problems, and works around a lot of compiler bugs and Linux library deficiencies.<br>
<br>
It&#39;s written almost entirely in Swift 4.0 with some C and Cuda kernels.<br>
Development and testing were done primarily on Ubuntu 16.04, but it will also build on MacOS.<br>
Linux was the primary environment, because there aren&#39;t any modern Macs that can host big NVIDIA hardware<br>
<br>
The framework interfaces with many common C libraries such as: *Cuda, cuDNN, lmdb, png, jpeg, zlib*<br>
<br>
Anyone in the community that is trying to work with these libraries might benefit from the Swift wrapper classes and examples of successful use. There are other isolated technology pieces that might be of use also.<br>
<br>
Other people&#39;s projects and examples helped me along the way, so I am hoping that my work will help some of you as well.<br>
<br>
The code and overview docs are published on GitHub<br>
<br>
docs: <a href="https://github.com/ewconnell/Netlib/wiki" rel="noreferrer" target="_blank">https://github.com/ewconnell/N<wbr>etlib/wiki</a> &lt;<a href="https://github.com/ewconnell/Netlib/wiki" rel="noreferrer" target="_blank">https://github.com/ewconnell/<wbr>Netlib/wiki</a>&gt;<br>
code: <a href="https://github.com/ewconnell/Netlib" rel="noreferrer" target="_blank">https://github.com/ewconnell/N<wbr>etlib</a> &lt;<a href="https://github.com/ewconnell/Netlib" rel="noreferrer" target="_blank">https://github.com/ewconnell/<wbr>Netlib</a>&gt;<br>
<br>
</blockquote>
<br>
Ed, it looks awesome! :-) Thank you for doing this and for sharing this!<br>
<br>
I&#39;m a beginner in ML world, so could you clarify some points please:<br>
<br>
1. Do I understand correctly, that main purpose of your library is to train the model? So, then we can export structure(connections)&amp;weights and use them where we need? Or also the purpose is efficient &#39;calculation&#39; of trained model on Mac/Linux, so this could be used in production apps?<br>
<br>
2. Currently this library has only Cuda compute service implemented, right? Do you plan to implement the same for Metal soon?<br>
<br>
3. What are your plans to support iOs and its Metal? So, the same library/code/way could be used to train/experiment and to &#39;use&#39; in apps on all(macOS/Linux/iOS) platforms.<br>
<br>
Thank you.<br>
Vladimir.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Happy coding, Ed :)<br>
<br>
<br>
______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-users</a><br>
<br>
</blockquote>
</blockquote></div><br></div>