I have followed the AWS tutorial(https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/object_detection_pascalvoc_coco/object_detection_image_json_format.ipynb) and trained my first model using SageMaker.
The end result is an archive containing the following files:
- hyperparams.json
- model_algo_1-0000.params
- model_algo_1-symbol.json
I am not familiar with this format, and was not able to load it into Keras via keras.models.model_from_json()
I am assuming this is a different format or an AWS proprietary one.
Can you please help me identify the format?
Is it possible to load this into a Keras model and do inference without an EC2 instance(locally)?
Thanks!
Built-in algorithms are implemented with Apache MXNet, so that's how you'd load the model locally. load_checkpoint() is the appropriate API: https://mxnet.apache.org/api/python/docs/api/mxnet/model/index.html#mxnet.model.load_checkpoint
Related
I need to train my openai model using nodejs programming language.
I just got python script to train my openai model but I don't know the python programming language.
Is it possible to train my openai model using nodejs?
Can anyone please help me with that?
Yes you definitely can fine-tune your own OpenAI model using Nodejs. Use the openai npm package.
Here are the steps.
Create the training file
This is a JSONL file (look up JSONL if you are not too familiar) with your training prompts and completions.
Upload the file
To upload the JSONL file use the method:
openai.createFile
Create a fine-tunes model
With the file uploaded you use another method to train your model:
openai.createFineTune
This will take some time and will eventually create a new fine-tuned model for you.
Use the new model
You will be able to use the new model in the completions endpoint by assigning the fine-tuned models name, to the model parameter.
All of this information is provided in the OpenAI API docs found here:
https://platform.openai.com/docs/api-reference/files/upload
There are code examples provided for each step. It will display the code in CURL by default but you can use the dropdown to change it to nodejs.
Good luck.
I am trying to port two pre-trained keras models into the IPU machine. I managed to load and run them using IPUstrategy.scope but I dont know if i am doing it the right way. I have my pre-trained models in .h5 file format.
I load them this way:
def first_model():
model = tf.keras.models.load_model("./model1.h5")
return model
After searching your ipu.keras.models.py file I couldn't find any load methods to load my pre-trained models, and this is why i used tf.keras.models.load_model().
Then i use this code to run:
cfg=ipu.utils.create_ipu_config()
cfg=ipu.utils.auto_select_ipus(cfg, 1)
ipu.utils.configure_ipu_system(cfg)
ipu.utils.move_variable_initialization_to_cpu()
strategy = ipu.ipu_strategy.IPUStrategy()
with strategy.scope():
model = first_model()
print('compile attempt\n')
model.compile("sgd", "categorical_crossentropy", metrics=["accuracy"])
print('compilation completed\n')
print('running attempt\n')
res = model.predict(input_img)[0]
print('run completed\n')
you can see the output here:link
So i have some difficulties to understand how and if the system is working properly.
Basically the model.compile wont compile my model but when i use model.predict then the system first compiles and then is running. Why is that happening? Is there another way to run pre-trained keras models on an IPU chip?
Another question I have is if its possible to load a pre-trained keras model inside an ipu.keras.model and then use model.fit/evaluate to further train and evaluate it and then save it for future use?
One last question I have is about the compilation part of the graph. Is there a way to avoid recompilation of the graph every time i use the model.predict() in a different strategy.scope()?
I use tensorflow2.1.2 wheel
Thank you for your time
To add some context, the Graphcore TensorFlow wheel includes a port of Keras for the IPU, available as tensorflow.python.ipu.keras. You can access the API documentation for IPU Keras at this link. This module contains IPU-specific optimised replacement for TensorFlow Keras classes Model and Sequential, plus more high-performance, multi-IPU classes e.g. PipelineModel and PipelineSequential.
As per your specific issue, you are right when you mention that there are no IPU-specific ways to load pre-trained Keras models at present. I would encourage you, as you appear to have access to IPUs, to reach out to Graphcore Support. When doing so, please attach your pre-trained Keras model model1.h5 and a self-contained reproducer of your code.
Switching topic to the recompilation question: using an executable cache prevents recompilation, you can set that up with environmental variable TF_POPLAR_FLAGS='--executable_cache_path=./cache'. I'd also recommend to take a look into the following resources:
this tutorial gathers several considerations around recompilation and how to avoid it when using TensorFlow2 on the IPU.
Graphcore TensorFlow documentation here explains how to use the pre-compile mode on the IPU.
I was exploring turicreate ObjectDetector API. The documentation mentions it is a trained model. I wanted to know if I can use this trained model & detect the 1000 labels which was used to originally train this turi model. All the examples mention to train with our dataset, I do not want to train but wanted to use pre-trained model which can classify. Any help is appreciated.
Is your question about how to load and use a pre-trained model? Turi create API docs mentions a load_model method:
model.save('my_model_file')
loaded_model = tc.load_model('my_model_file')
EDIT: Yep, ObjectDetector exposes a save method that works well with load_model.
I have a keras deep learning model and I have to now process a large dataset over it and calculate the results. This model is already trained, so training is not an issue. I tried exposing my model as a REST service and then calling the same via spark is working fine,but there is a latency factor and for a huge dataset this is a problem. Is there an example someone can quote which I can use as a reference to use my keras model in pyspark and process data by direct python calls instead of REST calls
I want to extract features using caffe and train those features using SVM. I have gone through this link: http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html. This links provides how we can extract features using caffenet. But I want to use Lenet architecture here. I am unable to change this line of command for Lenet:
./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb
And also, after extracting the features, how to train these features using SVM? I want to use python for this. For eg: If I get features from this code:
features = net.blobs['pool2'].data.copy()
Then, how can I train these features using SVM by defining my own classes?
You have two questions here:
Extracting features using LeNet
Training an SVM
Extracting features using LeNet
To extract the features from LeNet using the extract_features.bin script you need to have the model file (.caffemodel) and the model definition for testing (.prototxt).
The signature of extract_features.bin is here:
Usage: extract_features pretrained_net_param feature_extraction_proto_file extract_feature_blob_name1[,name2,...] save_feature_dataset_name1[,name2,...] num_mini_batches db_type [CPU/GPU] [DEVICE_ID=0]
So if you take as an example val prototxt file this one (https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt), you can change it to the LeNet architecture and point it to your LMDB / LevelDB. That should get you most of the way there. Once you did that and get stuck, you can re-update your question or post a comment here so we can help.
Training SVM on top of features
I highly recommend using Python's scikit-learn for training an SVM from the features. It is super easy to get started, including reading in features saved from Caffe's format.
Very lagged reply, but should help.
Not 100% what you want, but I have used the VGG-16 net to extract face features using caffe and perform a accuracy test on a small subset of the LFW dataset. Exactly what you needed is in the code. The code creates classes for training and testing and pushes them into the SVM for classification.
https://github.com/wajihullahbaig/VGGFaceMatching