Answer to question 1: For this, you can invoke the saveModel() method by providing the input model filename:
String FILENAME = Constants.FILENAME;
// Save the trained FM model
fmlsgd.saveModel(FILENAME);
The saveModel() method goes as follows:
public void saveModel(String FILENAME) throws Exception
{
FILENAME = Constants.FILENAME;
FileOutputStream fos = null;
DataOutputStream dos = null;
try {
fos = new FileOutputStream(FILENAME);
dos = new DataOutputStream(fos);
dos.writeBoolean(fm.k0);
dos.writeBoolean(fm.k1);
dos.writeDouble(fm.w0);
dos.writeInt(fm.num_factor);
dos.writeInt(fm.num_attribute);
dos.writeInt(task.ordinal());
dos.writeDouble(max_target);
dos.writeDouble(min_target);
...