Hi Ryan. We're hoping that this may just be an environment configuration
issue. 'Path'ing to 2.6 first, before seeing 2.7 When you have a chance
it'd be great to find out if that is the case. We don't think it is the
'bash -c' removal in that commit change I mentioned. Many thanks, Richard.

On Mon, Nov 2, 2015 at 9:06 AM, Richard Crowder <[email protected]> wrote:

> Excellent Ryan! Thanks for digging into this.
>
> It looks like a change I made recently, tested in the usual way but on
> simpler Linux environments (incl. Travis), has affected this [1]. The
> change (to not use "bash -c" when making a subprocess call to launch
> workers) may have been working fine for you. But after the change now
> doesn't pick up the right python in a shell for your environment. An
> alternative method exists for that change, so we'll need to work out
> whether that is good to go. I'll discuss this later today with Scott.
>
> Best regards, Richard.
>
> 1
> https://github.com/rcrowder/nupic/commit/1ee717ee6ed27c65d21a6312089170f170e960d8
>
> On Mon, Nov 2, 2015 at 1:56 AM, Ryan J. McCall <[email protected]>
> wrote:
>
>> Aha, I found the issue. The child process (running HypersearchWorker.py)
>> was picking up python2.6, which is installed on the machine. There is a
>> hard-coded command line statement containing "python" in the
>> permutations_runner.py code and when I switched it to "python2.7" it works.
>> Here's the line I changed in the current code:
>>
>>
>> https://github.com/numenta/nupic/blob/master/src/nupic/swarming/permutations_runner.py#L676
>>
>> Is there is a standard way of telling a linux machine which python to
>> use? I suppose that would be the best solution. I had made an alias in my
>> bashrc to set "python" to version 2.7 but clearly that must not apply to
>> subprocesses. If you can't specify this then it seems we want the "python"
>> to be configurable, or detectable from the system.
>>
>> On Sun, Nov 1, 2015 at 2:30 PM, Richard Crowder <[email protected]> wrote:
>>
>>> "linux2" looks fine for the handlers, where they use
>>> startswith("linux"). So not likely to be that. Only other think I needed to
>>> do was to delete swarming files generated.
>>> So out of ideas of how I could get it to work on Windows, and you not :(
>>> Unless it's something with different bindings versions or some other
>>> Python package. Locally I have nupic 0.3.6.dev0 and nupic.bindings 0.2.2
>>> and a variety of other Python packages.
>>>
>>> Does "import os; print os.pathsep" print a colon? I'm imagining it
>>> does.. Will try a Ubuntu VM though.
>>>
>>>
>>> On Sun, Nov 1, 2015 at 10:08 PM, Ryan J. McCall <[email protected]>
>>> wrote:
>>>
>>>> Hi Richard,
>>>>
>>>> Thanks for the reply. I'm not sure what I might change regarding the
>>>> log handlers. (I see that there is a default logging conf file that I can
>>>> override in my NTA_CONF_PATH.) In my script I'm able to say:
>>>>
>>>> from nupic.support import initLogging
>>>> initLogging()
>>>>
>>>> and I see a difference in the messages logged to console.
>>>>
>>>> The swarm-generated files don't seem to be the problem.
>>>>
>>>> "import sys; print sys.platform.lower()" gives "linux2"
>>>>
>>>> Best,
>>>>
>>>> Ryan
>>>>
>>>> On Sun, Nov 1, 2015 at 3:19 AM, Richard Crowder <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Ryan,
>>>>>
>>>>> I've just updated my nupic.core and nupic forks with latest from
>>>>> Numenta master. And faced the exact same problem (but on Windows). I 
>>>>> needed
>>>>> to do two things. Updating sys and file log handlers to support win32
>>>>> (src\nupic\support\__init__.py) and to delete files generated during the
>>>>> run of the 'simple' swarming test (with one worker, i.e. no --maxWorkers 
>>>>> on
>>>>> command line). Those changes MAY only be related to the Windows porting,
>>>>> but a few things to try..
>>>>>
>>>>> See what the Python commands "import sys; print sys.platform.lower()"
>>>>> outputs.
>>>>> Cleaning up files generated by the swarming (for me those files where
>>>>> description.py,permutations.py, model_0/ directory, a .pkl and.csv file)
>>>>> Using --overwrite flag when swarming with the scripts\run_scripts.py
>>>>>
>>>>> I'd be interested to see the sys.platform output.
>>>>>
>>>>> Regards, Richard.
>>>>>
>>>>>
>>>>> On Sun, Nov 1, 2015 at 1:02 AM, Ryan J. McCall <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hello NuPIC,
>>>>>>
>>>>>> I'm having an issue with swarming on a RHEL box. I've installed NuPIC
>>>>>> Version: 0.3.1. I have mysql running and have confirmed that db 
>>>>>> connections
>>>>>> can be made with the test_db.py script. The error I'm getting is similar 
>>>>>> to
>>>>>> some other threads (traceback below). The hypersearch finishes quickly,
>>>>>> evaluates 0 models and throws and exception because there's no result to
>>>>>> load. I would appreciate any suggestions. It looks like jobs are added to
>>>>>> the DB based on my debugging. My thought is to debug the 
>>>>>> HypersearchWorkers
>>>>>> next which run as separate processes -- have to figure out how to do 
>>>>>> that...
>>>>>>
>>>>>> Many thanks,
>>>>>>
>>>>>> Ryan
>>>>>>
>>>>>>
>>>>>> Successfully submitted new HyperSearch job, jobID=1020
>>>>>> Evaluated 0 models
>>>>>> HyperSearch finished!
>>>>>> Worker completion message: None
>>>>>>
>>>>>> Results from all experiments:
>>>>>> ----------------------------------------------------------------
>>>>>> Generating experiment files in directory: /tmp/tmp0y39RS...
>>>>>> Writing  313 lines...
>>>>>> Writing  114 lines...
>>>>>> done.
>>>>>> None
>>>>>> json.loads(jobInfo.results) raised an exception.  Here is some info
>>>>>> to help with debugging:
>>>>>> jobInfo:  _jobInfoNamedTuple(jobId=1020, client=u'GRP',
>>>>>> clientInfo=u'', clientKey=u'', cmdLine=u'$HYPERSEARCH',
>>>>>> params=u'{"hsVersion": "v2", "maxModels": null, "persistentJobGUID":
>>>>>> "1a3c7950-8032-11e5-8a23-a0d3c1f9d4f4", "useTerminators": false,
>>>>>> "description": {"includedFields": [{"fieldName": "time", "fieldType":
>>>>>> "datetime"}, {"maxValue": 50000, "fieldName": "volume", "fieldType": 
>>>>>> "int",
>>>>>> "minValue": 0}], "streamDef": {"info": "rp3_volume", "version": 1,
>>>>>> "streams": [{"info": "rp3_volume", "source":
>>>>>> "file:///home/rmccall/experiment/projects/rp3/rp3-training_data.csv",
>>>>>> "columns": ["*"]}]}, "inferenceType": "TemporalAnomaly", "inferenceArgs":
>>>>>> {"predictionSteps": [1], "predictedField": "volume"}, "iterationCount": 
>>>>>> -1,
>>>>>> "swarmSize": "small"}}',
>>>>>> jobHash='\x1a<\x81R\x802\x11\xe5\x8a#\xa0\xd3\xc1\xf9\xd4\xf4',
>>>>>> status=u'notStarted', completionReason=None, completionMsg=None,
>>>>>> workerCompletionReason=u'success', workerCompletionMsg=None, cancel=0,
>>>>>> startTime=None, endTime=None, results=None, engJobType=u'hypersearch',
>>>>>> minimumWorkers=1, maximumWorkers=8, priority=0, engAllocateNewWorkers=1,
>>>>>> engUntendedDeadWorkers=0, numFailedWorkers=0,
>>>>>> lastFailedWorkerErrorMsg=None, engCleaningStatus=u'notdone',
>>>>>> genBaseDescription=None, genPermutations=None,
>>>>>> engLastUpdateTime=datetime.datetime(2015, 11, 1, 0, 47, 18),
>>>>>> engCjmConnId=None, engWorkerState=None, engStatus=None,
>>>>>> engModelMilestones=None)
>>>>>> jobInfo.results:  None
>>>>>> EXCEPTION:  expected string or buffer
>>>>>> Traceback (most recent call last):
>>>>>>   File "/usr/local/lib/python2.7/pdb.py", line 1314, in main
>>>>>>     pdb._runscript(mainpyfile)
>>>>>>   File "/usr/local/lib/python2.7/pdb.py", line 1233, in _runscript
>>>>>>     self.run(statement)
>>>>>>   File "/usr/local/lib/python2.7/bdb.py", line 400, in run
>>>>>>     exec cmd in globals, locals
>>>>>>   File "<string>", line 1, in <module>
>>>>>>   File "htmAnomalyDetection.py", line 2, in <module>
>>>>>>     import argparse
>>>>>>   File "htmAnomalyDetection.py", line 314, in main
>>>>>>     runSwarming(args.nupicDataPath, args.projectName,
>>>>>> args.maxWorkers, args.overwrite)
>>>>>>   File "htmAnomalyDetection.py", line 164, in runSwarming
>>>>>>     "overwrite": overwrite})
>>>>>>   File
>>>>>> "/usr/local/lib/python2.7/site-packages/nupic/swarming/permutations_runner.py",
>>>>>> line 277, in runWithConfig
>>>>>>     return _runAction(runOptions)
>>>>>>   File
>>>>>> "/usr/local/lib/python2.7/site-packages/nupic/swarming/permutations_runner.py",
>>>>>> line 218, in _runAction
>>>>>>     returnValue = _runHyperSearch(runOptions)
>>>>>>   File
>>>>>> "/usr/local/lib/python2.7/site-packages/nupic/swarming/permutations_runner.py",
>>>>>> line 161, in _runHyperSearch
>>>>>>     metricsKeys=search.getDiscoveredMetricsKeys())
>>>>>>   File
>>>>>> "/usr/local/lib/python2.7/site-packages/nupic/swarming/permutations_runner.py",
>>>>>> line 826, in generateReport
>>>>>>     results = json.loads(jobInfo.results)
>>>>>>   File
>>>>>> "/usr/local/lib/python2.7/site-packages/nupic/swarming/object_json.py",
>>>>>> line 163, in loads
>>>>>>     json.loads(s, object_hook=objectDecoderHook, **kwargs))
>>>>>>   File "/usr/local/lib/python2.7/json/__init__.py", line 351, in loads
>>>>>>     return cls(encoding=encoding, **kw).decode(s)
>>>>>>   File "/usr/local/lib/python2.7/json/decoder.py", line 366, in decode
>>>>>>     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
>>>>>> TypeError: expected string or buffer
>>>>>>
>>>>>> --
>>>>>> Ryan J. McCall
>>>>>> ryanjmccall.com
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Ryan J. McCall
>>>> ryanjmccall.com
>>>>
>>>
>>>
>>
>>
>> --
>> Ryan J. McCall
>> ryanjmccall.com
>>
>
>

Reply via email to