These are notes to myself on using Hugging Face AutoTrain. The first version of this had a very nice interface where you could simply upload a folder of images and train a model. It was limited in the range of tasks and models, but made up for that in ease of use. Now AutoTrain has been replaced by AutoTrain Advanced, which not everyone is happy about.
Training a model
After a bit of fussing about (and paying attention to the log messages) I’ve managed to train a model to classify images in much the same way as before. The steps are as follows:
Go to AutoTrain Advanced. You should see a screen like this:
By default Docker
and AutoTrain
are selected. It will also show the free hardware spec (CPU basic • 2 vCPU • 16GB
). I found that for image classification this hardware choice would cause AutoTrain to fail, so I selected Nvidia T4 small • 4 vCPU • 15GB
.
Give your space a name and click on Create Space
to create the space. You will now see something like this:
It took 3-4 minutes to build the space. Once the space is built you will then be asked to log in to Hugging Face (seems odd, but that’s what it asks you to do). You are then asked to give your space permissions to connect to your account.
Now you will see a slightly scary looking interface (this is one reason why people miss the old “easy” AutoTrain).
For Task
I selected Image Classification
and the default base model (google/vit-base-patch16-224
). I ignored every other setting, and simply uploaded the training data. This was a zip file containing separate folders for each category of image, so that images, say of cats, would be in a folder called cats
, pictures of dogs would be in dogs
, etc.
I then clicked Start
and after a warning that this would cost money (I subscribe to Hugging Face)saw this:
You can track progress in the logs, which you can see using the middle of the buttons below.
Once completed, the space pauses, which is a little alarming but simply means that it has finished training. Yay, you now have a trained model!
When I first tried this, I got errors because I didn’t upload the data in the proper format (my zip file had a folder that contained the training data folders, it needs the folders to be in the root of the zip archive). It also failed to train on the base (free) hardware, I only discovered this by looking at the logs and see error messages regarding the lack of a GPU.
What now?
The other thing about the original AutoTrain was that it gave you an app to explore how you model worked on other data. The new AutoTrain simply pauses after training and you are left with “um, what do I do now?”
After some fussing I discovered that in my profile I now had a brand new Model
appearing in my list of models.
If I click on the model I go to the model page, where there is a Deploy
button, this is how you get an app. First though, make sure your model is publicly visible (by default it is private). Click on Settings
and go to the Change model visibility
to make it public. If you now click on the Deploy
button you will see a list of options:
I picked Spaces
. This enables you to create a simple online app. I accepted all the defaults (including the base, free hardware with no GPU) and in a couple of minutes you get a app that looks like this:
Upload an image, press Submit
and you will get a classification of that image:
Apps tend to sleep, so it may be that you come back to an app, load and image, and get an error message that the model is still loading. Wait a moment, try again, and it should work.
API
Using the app is fun, but if you wasn’t to use the model to classify lots of images then you want to use the API. The Deploy
button lists `Inferences API (serverless) as an option. Clicking on that gives you the URL you can to POST images to, it will return the results in JSON. As with the app, if the model is sleeping then your first call may through an error, typically wait a moment and try again, and then you can classify images in bulk.
Summary
Hugging Face is quite an extraordinary tool, and it is a way to try and make sense of the xplosiuon of AI techniques available. But it is clearly written by developers for developers, and that can make it intimidating, even for someone like me who writes code, uses GitHub, etc. The original AutoTrain was a joy to use in comparison, and this feels like a missed opportunity where Hugging Face could have keep both the old "easy" version alongside the new, more powerful, but rather clunkier "advanced" version. Still, this is easier than dealing directly with the hellscape that is Python.
Written with StackEdit.